一.列表
1.创建列表
注:列表是可变类型
① 直接赋值
例:
food_list = ['康师傅方便面', '酸奶', '雪糕', '康师傅方便面', 18, 8.88, [1, 2, 3]]
② 创建空列表
例1:
list1 = []
例2:
list2 = list()
2.数据类型转换
例:
string_value = 'python'
list_word = list(string_value)
print(list_word)
输出:
['p', 'y', 't', 'h', 'o', 'n']
3.列表遍历
例:
food_list1 = ['康师傅方便面', '酸奶', '雪糕', '康师傅方便面']
food_list2 = ['啤酒', '饮料', '矿泉水']
food_list3 = ['花生', '瓜子', '火腿肠']
food_list = [food_list1, food_list2, food_list3]
for i, value in enumerate(food_list): # enumerate()函数获取列表下标
print(f'第{i + 1}个元素的值是{value}')
for j, name in enumerate(value):
print(f'第{j + 1}个元素的值是{name}')
输出:
第1个元素的值是['康师傅方便面', '酸奶', '雪糕', '康师傅方便面']
第1个元素的值是康师傅方便面
第2个元素的值是酸奶
第3个元素的值是雪糕
第4个元素的值是康师傅方便面
第2个元素的值是['啤酒', '饮料', '矿泉水']
第1个元素的值是啤酒
第2个元素的值是饮料
第3个元素的值是矿泉水
第3个元素的值是['花生', '瓜子', '火腿肠']
第1个元素的值是花生
第2个元素的值是瓜子
第3个元素的值是火腿肠
4. list comprehensions(列表推导式)
① 最简形式
语法:
[expression for item in list] 等价于
for item in list:
expression
例1:
list_val = []
for i in range(1, 6):
list_val.append(i ** 2)
print(list_val)
输出:
[1, 4, 9, 16, 25]
new_list = [i ** 2for i in range(1, 6)]
print(new_list)
输出:
[1, 4, 9, 16, 25]
例2:
word_list = ['I', 'love', 'python']
print([i.upper() for i in word_list])
输出:
['I', 'LOVE', 'PYTHON']
② 过滤条件形式
注:if条件写在for循环后面,if-else写在for循环前面
语法:
[expression for item in list if contitianal] 等价于
for item in list:
if conditional
expression
例1:
list_val = []
for i in range(21):
if i % 2 == 0:
list_val.append(i)
print(list_val)
输出:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
new_list = [i for i in range(21) if i % 2 == 0]
print(new_list)
输出:
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
例2:
names = ['Lixiaohong', 'Lucy', 'Kenzo']
list_val = []
for i in names:
if len(i) < 8:
list_val.append(i.lower())
else:
list_val.append(i.upper())
print(list_val)
输出:
['LIXIAOHONG', 'lucy', 'kenzo']
new_list = [i.lower() if len(i) < 8 else i.upper() for i in names]
print(new_list)
输出:
['LIXIAOHONG', 'lucy', 'kenzo']
③ 循环嵌套形式
语法:
[expression for i in list1 for j in list2] 等价于
for item in list1:
if j in list2:
expression
例:
list_val = []
for i in '高富帅':
for j in '白富美':
list_val.append(i + j)
print(list_val)
输出:
['高白', '高富', '高美', '富白', '富富', '富美', '帅白', '帅富', '帅美']
new_list = [i + j for i in '高富帅' for j in '白富美']
print(new_list)
输出:
['高白', '高富', '高美', '富白', '富富', '富美', '帅白', '帅富', '帅美']
二.元组
1. 创建元组
注1:元组是不可变类型
注2:只有一个元素时,需在最后加一个逗号
① 直接赋值
例:
tuple_val = (1, 'hello', [1, 2, 3], (1, 2, 3))
tuple_1 = (1,)
② 创建空列表
例1:
tuple1 = ()
例2:
tuple2 = tuple()
2. 元组遍历
例:
tuple_val = (1, 'hello', [1, 2, 3], (1, 2, 3))
for i in tuple_val:
print(i)
输出:
1
hello
[1, 2, 3]
(1, 2, 3)
3. 内建函数
① count查询
例:
tuple_val = (1, 'hello', [1, 2, 3], (1, 2, 3))
print(tuple_val.count(1))
输出:
1
② index查询
返回匹配第一个元素的索引值
例:
tuple_val = (1, 'hello', [1, 2, 3], (1, 2, 3))
print(tuple_val.index([1, 2, 3]))
输出:
2
③ 通用:in,not in
4. 元组拆包
例1:
info = ('Kenzo','man','20')
name, gender, age = ('Kenzo','man','20')
print(name)
print(gender)
print(age)
输出:
Kenzo
man
20
例2:
info = ('Kenzo', 'man', '20')
_, _, age = ('Kenzo', 'man', '20') # 占位符方式
print(age)
输出:
20
例3:
a, b, *rest, c, d = range(10)
print(a)
print(b)
print(c)
print(d)
print(rest)
输出:
0
1
8
9
[2, 3, 4, 5, 6, 7]
例4:
num1 = 10
num2 = 5
num1, num2 = num2, num1
print(num1)
print(num2)
输出:
5
10
三.列表 vs 元组
1. 存储空间对比,元组占用空间小于列表
list1 = list()
print(list1.__sizeof__())
tuple1 = tuple()
print(tuple1.__sizeof__())
输出:
20
12
2. 运行效率对比, 元组快于列表
from timeit import timeit
print(timeit('list1 = [1,2,3,4,5]', number=100000000))
print(timeit('tuple1 = (1,2,3,4,5)', number=100000000))
输出:
5.0030306
1.2714490000000005