1,列表推导式
① 序列变换成列表
str1 = 'abc'
list1 = [x for x in str1]
print(list1) # ['a', 'b', 'c']
nums = [10, 245, 89, 56]
list2 = [x*100 for x in nums]
print(list2) # [1000, 24500, 8900, 5600]
② 筛选(提取出有效的或者删除无效)
scores = [89, 8, 100, 98, 67, 34, 59, 45, 23, 78, 92]
new_scores = [x for x in scores if x >= 60]
print(new_scores)
③ 不统一的变换
list4 = [19, 'abc', 98, 'mnb', 13, 53]
new_list4 = [x*10 if type(x) == int else x for x in list4]
# 用到if_else和for_in
print(new_list4) # ->[190, 'abc', 980, 'mnb', 130, 530]
2, 相关函数
① max和min
max(序列) - 返回序列中元素的最大值
min(序列) - 返回序列中元素的最小值
nums = [90, 89, 67, 29, 789, 2]
print(max(nums))
print(min(nums))
② sum
sum(序列) - 求序列中所有元素的和(序列中的元素只能是数字)
print(sum(range(101)))
③ sorted
A sorted(序列) - 将序列中的元素从小到大排序(升序),以列表的形式返回
B sorted(序列, reverse=True) - 将序列中的元素从大到小排序(降序),以列表的形式返回
nums = [90, 89, 67, 29, 789, 2]
new_nums = sorted(nums)
print(new_nums) # [2, 29, 67, 89, 90, 789]
new_nums = sorted(nums, reverse=True)
print(new_nums) # [789, 90, 89, 67, 29, 2]
④ list
list(序列) - 将其他序列转换成列表(任何序列都可以转换成列表)
list1 = list('abc')
print(list1) # ['a', 'b', 'c']
list2 = list(range(10, 15))
print(list2) # [10, 11, 12, 13, 14]
3,相关方法
① 列表.clear() - 删除列表中所有的元素
song = ['关山酒', '将故事写成我们', '身骑白马', '告白气球']
song.clear()
print(song) # []
② 列表.copy() - 返回一个和原列表一样(长得一样)的新的列表,相当于列表[:]、列表+[]、列表*1。
song = ['关山酒', '将故事写成我们', '身骑白马', '告白气球']
song2 = song.copy()
print(song2) # ['关山酒', '将故事写成我们', '身骑白马', '告白气球']
③ 列表.count(元素) - 返回元素在列表中出现的次数
nums = [34, 23, 23, 4, 5, 67, 8, 12, 4, 23]
print(nums.count(23)) # 3
④ 列表.extend(序列) - 将序列中的元素全部添加到列表中
song = ['关山酒', '将故事写成我们', '身骑白马', '告白气球']
song.extend(['counting star', '加州旅馆'])
print(song) # ['关山酒', '将故事写成我们', '身骑白马', '告白气球', 'counting star', '加州旅馆']
⑤ 列表.index(元素) - 返回元素在列表中的下标(这儿的下标是0开始的下标值),如果元素有多个,只返回最前的元素的下标。如果元素不存在,报错!
print(song.index('关山酒')) # 0
print(song.index('身骑白马')) # 2
⑥ 列表.reverse() - 列表逆序
song = ['关山酒', '将故事写成我们', '身骑白马', '告白气球']
song.reverse()
print(song)
⑦ 列表.sort() 列表.sort(reverse=True)
nums = [90, 89, 67, 29, 789, 2]
nums.sort()
print(nums) # [2, 29, 67, 89, 90, 789]
nums = [90, 89, 67, 29, 789, 2]
new_nums = sorted(nums)
print(nums) # [90, 89, 67, 29, 789, 2]
print(new_nums) # [2, 29, 67, 89, 90, 789]
4,字典
① 字典是容器型数据类型,将{}作为容器的标志,里面多个元素(元素都是键值对)用逗号隔开:{键1:值1, 键2:值2, 键3:值3,…}字典可变(支持增删改);字典是无序(不支持下标操作)字典的元素 - 必须是键值对。
键 - 必须是不可变的数据(一般使用字符串)、唯一的
值 - 任何类型的数据都可以,可以重复
② 查 - 获取字典的值
A 获取单个值
a. 字典[key] - 获取字典中指定key对应的值,如果key不存在会报错
b. 字典.get(key) - 获取字典中指定key对应的值,如果key不存在不报错并且返回None
c. 字典.get(key, 默认值)
B 遍历
for-in 遍历字典的是,变量取到的是字典的键
film = {'name': '肖生克的救赎', 'director': '弗兰克·德拉邦特', 'time': '1994'}
print(film['name']) # 肖生克的救赎
print(film['time']) # 1994
# print(film['age']) # 报错:KeyError: 'age'
film = {'name': '肖生克的救赎', 'director': '弗兰克·德拉邦特', 'time': '1994'}
for x in film:
print(x, film[x])
C 其他
dict1 = {x: x * 2 for x in range(6)} # 用字典生成式生成一个字典
print(dict1) # {0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10}
print(dict1.keys()) # 获取字典得所有键
print(dict1.values()) # 获取字典得所有值
print(dict1.items()) # 获取字典中所有得键值对
③ 增、改
字典[key] = 值 - 当key存在的时候就是修改;当key不存在的时候就是增加。
computer = {'price': 5432, 'brand': '联想'}
print(computer)
computer['color'] = '白色'
print(computer) # {'price': 5432, 'brand': '联想', 'color': '白色'}
④ 删
A del 字典[key] - 删除字典中指定key对应的键值对。(key不存在报错)
B 字典.pop(key) - 取出字典中指定key对应的值
computer = {'price': 3000, 'brand': '联想', 'color': '白色'}
del computer['price']
print(computer) # {'brand': '联想', 'color': '白色'}
computer = {'price': 3000, 'brand': '联想', 'color': '白色'}
price = computer.pop('price')
print(computer, price) # {'brand': '联想', 'color': '白色'} 3000
5,字典的相关操作和方法
① in 和 not in 操作
# 字典的in和not in 判断的是某个key是否存在
dict1 = {'a': 10, 'b': 20, 'c': 30}
print(10 in dict1) # False
print('a' in dict1) # True
② max、min、sum、sorted - 这些操作全部针对字典的key
③ dict
dict(序列) - 将序列转换成字典。
序列的要求:
a. 序列中的每个元素都是序列
b. 小序列有且只有两个元素
c. 小序列的第一个元素不可变
seq = ['ab', '12', 'c1']
print(dict(seq)) # {'a': 'b', '1': '2', 'c': '1'}
seq = [range(2), ['name', '小明']]
print(dict(seq)) # {0: 1, 'name': '小明'}
# 字典转列表,是将字典所有的键作为列表元素 (所有序列都可以转换成列表)
dict1 = {'a': 10, 'b': 20, 'c': 30}
print(list(dict1)) # ['a', 'b', 'c']