元组

  • 元组简介:
    元组表现形式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)