元组
- 元组简介:
元组表现形式tuple,是一个不可变得序列(当我们希望数据不改变时,使用元组,其他情况基本上都是使用列表) - 元组的创建:
使用()创建,或者使用tuple()。注:元组不是空元组至少有一个 逗号(,) 当元组不是空元组时括号可以省略
a = (1,2,3,4)
b = [1,2,3,4]
c=tuple(b)
d=(1,)
print(type(a))
print(type(c))
print(type(d))
- 元组的解包:
元组解包指将元组当中的每一个元素都赋值给一个变量
a = (1,2,)
x,y=a
print(x,y)
b = (1,2,3,4)
x,*y,z=b
print(x,y,z)
- 元组的操作方法除了和数据不可变之外,列表的操作方法基本适用于元组。
for循环和range函数
- for循环:遍历列表
- 语法:
语法
for 变量 in 序列(遍历的规则):
代码块
else:
代码块
- range()函数:range(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5)
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
for i in range(1,10,2): #打印1-10的奇数
print(i)
a=[1,2,3,4,5]
for i in a: #遍历列表
print(i)
字典
- 简介:
字典属于一种新的数据结构称为映射(mapping),作用和列表类似,都是用来存储对象的容器 - 特性:
- 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反。
- 在字典中每一个元素都有唯一的名字,通过这个唯一的名字可以找到指定的元素,这个唯一的名字我们称之为key 通过key可以快速查询value 也可以称之为值。
- 字典我们也称之为键值对(key-value)结构。
- 每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)
- 字典的值可以是任意对象 字典的键可以是任意的不可变对象(int str bool tuple…)
- 每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)。
- 字典的键是不能重复的,如果出现重复的后面的会替换前面的。
a = {"b":1,"c":2}
print(type(a))
d=[("a",1),("b",2),("c",3)]
d1=dict(d)
print(d1,type(d1))
d2={"name":"电击小子","age":18,"age":22} #如果key值重复,会替换前面的。
print(d2)
- 字典的使用
- get(key[,default]) 根据键来获取字典的值。第二个参数可以指定一个默认值,当获取不到值的时候会返回默认值
d2={"name":"电击小子","age":18,"gerder":"male"}
print(d2["name"]) #如果key不存在,会报错。
print(d2.get("name")) #如果key不存在,则会反悔None
- update() 将其他字典的key-value添加到当前的字典当中,如果key已存在,则会更新值。
d2={"name":"电击小子","age":18,"gerder":"male"}
d3 = {"b":1,"c":2}
d2.update(d3)
print(d2)
- del 删除字典中的key-value
- popitem() 删除字典最后的一个key-value 这个方法是有返回值的。删除之后它会将删除的key-value作为返回值返回
- pop(key[,default]) 根据key删除自定中的value。第二个参数可以指定一个默认值,当获取不到值的时候会返回默认值
d2={"name":"电击小子","age":18,"gerder":"male"}
del d2["name"]
print(d2)
d2={"name":"电击小子","age":18,"gerder":"male"}
del d2["name"]
d2.popitem()
print(d2.pop("x","不存在"))
print(d2)
- 遍历字典
- keys() 该方法返回字典所有的key
- values() 该方法返回一个序列 序列中保存有字典的值
- items() 该方法会返回字典中所有的项 它返回一个序列,序列中包含有双值子序列 双值分别是 字典中的key和value
d2={"name":"电击小子","age":18,"gerder":"male"}
print(d2.keys())
print(d2.values())
print(d2.items())
练习
1.a = {“name”:“123”,“data”:{“result”:[{“src”:“python1”},{“src”:“python2”},{“src”:“python3”}]}} 找到python1,python2,python3
a = {"name":"123","data":{"result":[{"src":"python1"},{"src":"python2"},{"src":"python3"}]}}
print(a.get("data").get("result")[0].get("src")) #获取python1
print(a.get("data").get("result")[1].get("src")) #获取python2
print(a.get("data").get("result")[2].get("src")) #获取python3
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]
keys={"key1":[],"key2":[]}
for i in a:
if i > 66:
keys.get("key1").append(i)
elif i <66:
keys.get("key2").append(i)
print(keys)
3 现在有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中, 保证办公室内至少有一位老师。
import random
a = [1,2,3,4,5,6,7,8]
list_1=[]
list_2=[]
list_3=[]
all_list=[list_1,list_2,list_3]
while 1:
for j in a:
random.choice(all_list).append(j)
if len(list_1) != 0 and len(list_2) != 0 and len(list_3) != 0:
break
print(list_1)
print(list_2)
print(list_3)