美文网首页
2020-01-02培训

2020-01-02培训

作者: Cipolee | 来源:发表于2020-01-02 16:34 被阅读0次

字典

字典方法

  for  item in zidianname:
  等价于for key in zidianname.key():
  修改
  zidianname[key]=value
  删除某属性
  del zidianname[key]
  删除整个表
  zidianname.clear()
字典无序,统计字典内值出现次数时不需要可以去重
 列表与字典的强制转换
 a=list(direct)
int(),float(),dict(),list(),str()
  value值一定是字符串
  由key获得值,应该用.get() 获得values
  a.update()更新字典,合并键和值以最后一个为准,合并到a里面
  fromkeys也可以去重
  dict_keys=arr.fromkeys()
  print(list(dict_keys.keys()))

字典合并

image.png

集合

去重

unique_dequeue=list(set(dequeue))
discard()
set用作工具用

###tuple
tuple不可修改,且可切片
index()指出
count()数出
from collections import nametuple
nametuple和字典很像

函数传值

传可变类型和传不可变类型
双下划线的作用
不定长形参
*c如下程序

def my_max(a,*c):
  m=max(c)
  if a>m:
      return a
  else:
    return m
保证程序鲁棒性

lambda表达式,亦匿名函数,只有特殊用途的函数


map映射

map用法

filter过滤

zip()函数可以按顺序的方式合并两个
isdigit()是对字符串进行测试
def 8**(n):
if str(n).isdigit():
return true
简单

序列

获得序列,从中提取数据的问题
1.空序列,无索引
2.序列为none

课后代码

输入一维数组
a=[int(n) for n in input().split()]
或者
a=list(map(int,input().split())
map(function,iterable...)得到的形式和iterable一个形式

import copy
def bubble(a):#冒泡排序函数
    num=len(a)
    while num:
     num-=1
     for j in range(num):
         if a[j] > a[j + 1]:
             tem = a[j]
             a[j] = a[j + 1]
             a[j + 1] = tem

    return a
'''
# #a=[1,5,1,3,8,9]
# a=list(map(int,input(请输入需要排序的整数).split()))
原方案,可正确运行,但鲁棒性不高,不能识别非法输入
#是否需要先开一块内存用于暂时存储,判断输入类型呢
#需要,鲁棒性设计
'''
#对输入进行识别
tem=input("请输入需要排序的整数\n")
t=copy.deepcopy(tem)
t=t.replace(' ','',len(tem))
'''
print(t)
print(len(tem))
'''
if t.isdigit():
    a=list(map(int,tem.split(' ')))
    print(bubble(a))
else :
    print("invalid input")

import copy
#抽象出函数,发现python没有传值或者传参这一概念
#单个可变变量没法写函数交换,使用列表元组可传参交换因为是不可变对象
# def swap(a,b):
#     c=a
#     a=b
#     b=c
def choosesort(a):#排选择序函数
    num=len(a)
    while num:
        max = a[0]
        c=0
        for i in range(1,num):
            if max<a[i]:
                max=a[i]
                c=i
        #swap(a[c],a[num])
        tem=a[c]
        a[c]=a[num-1]
        a[num-1]=tem
        num-=1
    return a
#是否需要先开一块内存用于暂时存储,判断输入类型
#需要,鲁棒性设计
#a=list(map(int,input("请输入需要排序的整数").split()))
#对输入进行识别
tem=input("请输入需要排序的整数\n")
t=copy.deepcopy(tem)
t=t.replace(' ','',len(tem))
if t.isdigit():
    a=list(map(int,tem.split(' ')))
    print(choosesort(a))
else :
    print("invalid input")


import copy
#思路通过指定是否反转排序好的列表 以获得升序或降序
#升序:asc,降序:desc
#more function:可识别升降序非法控制和数据集的错误输入
def My_sort(a,b):
    if b=="asc":
        a=sorted(a)
    elif b=="desc":
        a=sorted(a,reverse=True)
    else:
        print("please reinput in correct way")
    return a
#a=[int(n) for n in input().split()]
tem=input("请输入需要排序的整数\n")
t=copy.deepcopy(tem)
t=t.replace(' ','',len(tem))
if t.isdigit():
    a=list(map(int,tem.split(' ')))
else :
    print("invalid input")

b=input("请指明升降序,升序输入asc,降序输入desc\n")
print(My_sort(a,b))

#思路使用lambda表达式来指定sort的键
def sort_by_key(a):
    a=sorted(a,key=lambda x:x[0])
    return a

from operator import  itemgetter
def sort_by_somevalues(a,b):#a:序列,b:排序的列
    a=sorted(a,itemgetter(b))
    return a

'''
def add_to(num, target=[]):
    target.append(num)
    print(num, target)

add_to(3, [1])
add_to(4)
add_to(5)

输出
3 [1, 3]
4 [4]
5 [4, 5]
'''
#答案如下
'''
改正
def add_to(num, target=[]):
    if len(target):target.append(num)
    print(num, target)
    '''

相关文章

网友评论

      本文标题:2020-01-02培训

      本文链接:https://www.haomeiwen.com/subject/cvenoctx.html