元组和字典
列表相关操作
1.数学运算:+,*
列表1 + 列表2 – 将列表1 和列表2 中的元素合并产生一个新的列表
列表 * N (N * 列表) – N必须是正整数,将列表中的元素重复N次产生一个新的列表
list1 = [1, 2, 3]
list2 = [4, 5, 6]
print(list1 + list2) # [1, 2, 3, 4, 5, 6]
print(list1 * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
2.比较运算
- == !=
补充: is 的用法
== 是判断数据的值是否相等
is 是判断数据对应的地址是否相等
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 == list2) # True
print(list1 is list2) # False
print(list2 is [1, 2, 3]) # False
print(id(list1), id(list2)) # 2111629472392 2111628202504
给不同变量赋相同的数字或字符串时,赋值前系统会先检查这个数字和字符串是否已存在,如果存在会直接返回数据的地址给变量,不存在时才会开辟新的内存返回新的地址
- < , > , >= , <=
列表1 > 列表2
print([1, 2, 3, 4] > [100, 200]) # False
print([101, 2, 3, 4] > [100, 200]) # True
3.相关函数
- max min
nums = [56, 56, 23, 59, 19, 98, 63]
max(序列) 获取最大值
min(序列) 获取最小值
print(max(nums)) # 98
print(min(nums)) # 19
- sorted
sorted(列表) – 将列表中的元素从小到大重新排序产生一个新的列表(不会改变原列表)
sorted(列表,reverse=True) 将列表中的元素由大到小进行排序生成一个新列表
nums = [56, 56, 23, 59, 19, 98, 63]
new_nums = sorted(nums)
print(nums) #[56, 56, 23, 59, 19, 98, 63]
print(new_nums) # [19, 23, 56, 56, 59, 63, 98]
print(sorted(nums, reverse=True)) # [98, 63, 59, 56, 56, 23, 19]
- reversed
reversed(列表) – 将列表中的元素倒序产生新的迭代器对象
nums=[56, 56, 23, 59, 19, 98, 63]
new_nums = reversed(nums)
print(new_nums) # <list_reverseiterator object at 0x000001ADD4AD1A88>
print(list(new_nums)) # [63, 98, 19, 59, 23, 56, 56]
- sum
sum(列表) – 返回列表中所有函数的和
nums = [56, 56, 23, 59, 19, 98, 63]
sum1 = sum(nums)
print(sum1) # 374
print(sum(range(1, 101))) # 1+2+3..+100 = 5050
- list
list(数据) – 将数据转换为列表
所有容器型数据类型的数据都看可以转换成列表
将容器中的元素全部转换成列表中的元素
2.列表相关方法
- clear
列表.clear() – 清空列表
list1 = [1, 2, 3, 4, 5, 6]
list1.clear()
print(list1)
- copy
列表.copy() – 复制列表中的所以元素产生一个新的列表
列表.copy() 浅拷贝
list1 = [1, 5, 3, 4, 69, 7, 8]
list2 = list1 # 直接赋值(赋的是地址,和list1相互影响)
list3 = list1.copy() # (不会和list1相互影响)
list1.append(100)
print(list1) # [1, 5, 3, 4, 69, 7, 8, 100]
print(list2) # [1, 5, 3, 4, 69, 7, 8, 100]
print(list3) # [1, 5, 3, 4, 69, 7, 8]
- count
列表.count(元素) – 统计元素在列表中出现的次数
num = [2, 5, 6, 7, 8, 4, 95, 6, 4, 5, 3, 1, 62, 3, ]
print(nums.count(5)) # 2
- extend
列表.extend(序列) – 将序列中的元素添加到列表中(不会产生新的列表)
list1 = [1, 2, 3]
list1.extend([4, 5, 6])
print(list1) # [1, 2, 3, 4, 5, 6]
- index
1) 列表.index(元素) – 获取指定元素的下标
说明:
如果元素不存在会报错
如果指定的元素有多个只会返回最前面的那个的下标值
2)列表.index(元素,开始下标,结束下标) – 获取指定元素在列表中的下标值(查找范围在开始下标到结束下标之间)
nums = [10, 20, 30, 1, 2, 30]
print(nums.index(10)) # 0
print(nums.index(30)) # 2
# print(nums.index(5)) # 报错
print(nums.index(30, 3)) # 5
- reverse
列表.reverse() — 将列表中的元素倒序(不会产生新列表)
nums = [1, 2, 3]
nums.reverse()
print(nums) # [3, 2, 1]
- sort
列表.sort – 从小到大排序
列表.sort(reverse=True) — 从大到小排序
nums = [1, 3, 5, 4, 2]
nums.sort()
print(nums) # [1, 2, 3, 4, 5]
3 .列表推导式
1.列表推导式 – 用来创建列表的表达式
- 语法1:
[表达式 for 变量 in 序列]
让变量去序列中取值,每取一个值就创建一个元素(元素的值就是表达式的值)
list1 = [1 for x in range(4)]
print(list1) # [1, 1, 1, 1]
list2 = [x for x in range(4)]
print(list2) # [0, 1, 2, 3]
list3 = [2 * x for x in range(4)]
print(list3) # [0, 2, 4, 6]
- 语法2:
[表达式 for 变量 in 序列 if 条件语句]
让变量取序列中的值,每取一个值就判断条件语句是否为True,shiTrue就创建一个元素(元素的值就是表达式的值)
list4 = [x for x in range(6) if x & 1 == 0]
print(list4) # [0, 2, 4]
list5 = [x ** 2 for x in range(10) if x % 2]
print(list5) # [1, 9, 25, 49, 81]
- 语法3:
[表达式 for 变量1 in 序列1 for 变量2 in 序列2]
说明:
for 变量1 in 序列1:
for 变量2 in 序列2:
产生元素(值是表达式的结果)
list6=[x*y for x in range(3) for y in range(3)]
print(list6) # [0, 0, 0, 0, 1, 2, 0, 2, 4]