字典
字典方法
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()))
字典合并
![](https://img.haomeiwen.com/i14913526/f1fbdb94b6e3316d.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表达式,亦匿名函数,只有特殊用途的函数
![](https://img.haomeiwen.com/i14913526/3d8182ce34ce808a.png)
map用法
![](https://img.haomeiwen.com/i14913526/fd162bfd64da78ee.png)
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)
'''
网友评论