元组
元组
元组中的值是无法更改的,除此之外,元组与列表有完全相同的功能,可以逐项输出,也可以通过tuple[i]表示第i+1个元素.
元组的创建
元组的创建与列表相似,唯一不同的地方是,元组是通过()将元素包含在内,我们可以通过定义一个tuple()来表示一个元组。
tuple1=(1,2,3,4,5)
注意:逗号是必须的.例如:
(1,)是一个元组
而(1)是一个整型。
元组中的函数
len(tuple)表示某一元组的长度
max(tuple)表是元组的最大值
min(tuple)表示元组的最小值
字典
字典的定义
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号( : )分割,每个键值对之间用逗号 (, )分割,整个字典包括在花括号 {} 表示
dict1={'name':'张三','occupation':'职业罪犯'}
字典的基本用法
- 通过 key 访问 value 。
- 通过 key 添加 key-value 对。
- 通过 key 删除 key-value 对。
- 通过 key 修改 key-value 对。
- 通过 key 判断指定 key-value 对是否存在。
- 通过 key 访问 value 使用的也是方括号语法
字典的常用方法
- clear()方法 清楚字典中的所有元素,使其变为一个空字典。dict1.clear()
- get()方法 可以通过字典中的key值来访问value,并且当其中没有该key值时,会返回None
字典的输出
print(dict1.keys())#输出所有的key值
print(dict1.values())#输出所有vale值
for k in dict1.keys():
print(k, dict1[k])
浅拷贝和深拷贝
b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。 copy 模块的 deepcopy 方法。
作业
作业1
我们想要从字典里取出python1,python2,python3。
a = {"name":"123","data":{"result":[{"src":"python1"},{"src":"python2"},{"src":"python3"}]}}
b=a.get('data')
list1=b.get('result')
for i in range(0,3):
print(list1[i].get('src'))
作业2
# 有如下值集合[11,22,33,44,55,66,77,88,99,90],
# 将所有大于66的值保存至字典的第一个key的值中,
# 将小于66值保存至第二个key的值中。
a=[11,22,33,44,55,66,77,88,99,90]
b=[]
c=[]
dic={'大于66':b,
'小于66':c}
for j in range(0, len(a)):
if a[j]>66:
dic.get('大于66').append(a[j])
continue
elif a[j]<66:
dic.get('小于66').append(a[j])
continue
print(dic)
小复习
打印出斐波那契数列
def fib(n):
a=1
b=1
for i in range(1,n):
print('%12ld%12ld'%(a,b),end='\t')
if i%3==0:
print('')
a=a+b
b=a+b
fib(22)
1 1 2 3 5 8
13 21 34 55 89 144
233 377 610 987 1597 2584
4181 6765 10946 17711 28657 46368
75025 121393 196418 317811 514229 832040
1346269 2178309 3524578 5702887 9227465 14930352
24157817 39088169 63245986 102334155 165580141 267914296
Process finished with exit code 0
输出结果非常好看,斐波那契数列其实实现非常简单,将a和b不断地赋值,将a改成b,将b改成a+b,循环下去,我们就能得到一个这样的数列.