day6列表
1.列表相关操作
1.数学运算符:+、*
"""
1)列表1 + 列表2:将两个列表中的元素合并产生一个新的列表
例如:[x, y, z] + [m, n] --> [x, y, z, m, n]
2)列表*N(或者N*列表):列表中的元素重复N次产生一个新的列表
"""
num1 = [1, '风筝', True]
num2 = ['小花', 12, '大王', '小王']
print(num1 + num2) # [1, '风筝', True, '小花', 12, '大王', '小王']
num1 = [1, '风筝', True]
print(num1*2) # [1, '风筝', True, 1, '风筝', True]
2.比较运算符:==、!=、>= 、<=、>、<
"""
1)==、 !=
2)>、<、>=、<= --- 列表比较大小,比较的是第一对不相等的元素大小
列表1 > 列表2
"""
print([1, 2, 3] == [1, 2, 3]) # True
print([1, 2, 3] == [3, 2, 1]) # False
print([1, 100, 200, 300] > [10, 20]) # False
print([1, 100, 200, 300] > [1, 100]) # True
3.in 和 not in
"""
元素 in 列表 - 判断列表中是否存在指定元素
元素 not in 列表 - 判断列表中是否不存在指定元素
"""
print(10 in [10, 20, 30]) # True
print(100 in [10, 20, 30]) # False
print([10, 20] in [10, 20, 30]) # False
print([10, 20] in [[10, 20], 30]) #True
# 练习1:有两个列表A和B,使用列表C来获取两个列表中的公共的元素
# > 例如: A = [1, 'a', 4, 90] B = ['a', 8, 'j', 1] --> C = [1, 'a']
A = [1, 2, 'a', 'c', 'b']
B = [5, 2, 'c', 'a', 1]
C =[]
for x in A:
if x in B and not in C:
C.append(x)
print(C)
# 练习2:有一个长度是10的列表,数组内有10个人名,要求去掉重复的
# > 例如:names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三'] -> names = ['张三', '李四', '大黄']
names = ['小花', '张起灵', '小红', '小花', '小明', '小红', '小红', '小明', '小碧']
new_names = []
for x in names:
if x not in new_names:
new_names.append(x)
print(new_names)
2.列表相关函数
1.max和min(求最大值和最小值)
"""
max(序列) - 获取序列中元素的最大值
min(序列) - 获取序列中元素的最小值
注意:序列中的元素之间必须支持比较大小操作
"""
nums = [78, 23, -9, 34, 89, 54]
print(max(nums)) # 89
print(min(nums)) # -9
# 求最大值、最小值的套路
nums = [78, 23, -9, 34, 89, 54]
# 最大值套路
max1 = nums[0]
for x in nums[1:]:
if x > max1:
max1 = x
print(max1)
# 最小值套路
min1 = nums[0]
for x in nums[1:]:
if x < min1:
min1 = x
print(min1)
2.求和sum
"""
sum(数字序列) - 计算序列中所有元素的和
"""
nums = [78, 23, -9, 34, 89, 54]
print(sum(nums))
3.sorted(排序)
"""
sorted(序列) - 将序列中的元素从小到大(升序)排序,产生一个新的列表
sorted(序列,reverse = True) - 将序列中的元素从大到小(降序)排序,产生一个新的列表
"""
nums = [78, 23, -9, 34, 89, 54]
new_nums1 = sorted(nums)
print(new_nums1)
new_num2 = sorted(nums,reverse=True)
print(new_num2)
4.len
# len(序列) - 统计序列中元素个数
print(len('abc')) # 3
5.list
# list(数据) - 将指定的数据转换成列表(所有的序列可以转换成列表;是将序列中的元素作为列表的元素)
print(list('abc123')) # ['a', 'b', 'c', '1', '2', '3']
print(list(range(3))) # [0, 1, 2]
6.enumerate - 枚举
"""
[10, 20, 30] --> [(0, 10), (1, 20), (2, 30)]
for 变量1, 变量2 in enumerate(列表):
变量1是每个元素的下标
变量2是每个元素
"""
nums = [78, 23, -9, 34, 89, 54]
for index, item in enumerate(nums):
print(index, item)
3.列表相关的方法
1列表.clear() - 清空列表
nums = [20, 98, 65, 23]
nums.clear()
print(nums) # []
2.列表.copy()
"""
列表.copy() - 复制原列表产生一个一模一样的新列表(即克隆)
如果直接用一个变量给另外一个变量赋值,赋的是地址。赋值后两个变量指向同一个数据
注意:列表[:]、列表*1、列表 + []的功能和列表.copy()的效果一样
"""
list1 = [10, 'abcd', 20]
list2 = list1.copy()
print(list2)
3.列表.count()
"""
列表.count() - 统计指定元素在列表中出现的次数
"""
num = [10, 23, 0, 12, 10, 34, 23, 23, 50]
print(num.count(10)) # 2
print(num.count(-1)) # 0
4.列表.extend(序列)
"""
列表.extend(序列) - 将序列中的元素全部添加到列表中
"""
nums = [100, 200]
scores = [78, 98, 99]
nums.extend(scores)
print(nums) # [100, 200, 78, 98, 99]
5.列表.index(元素)
"""
列表.index(元素) - 获取元素的下标值(0开始的下标值)
nums = ['小明', '张三', '李四', '小明']
print(nums.index('李四')) # 2
"""
6.列表.reverse()
"""
列表.reverse() - 逆序(倒序);将列表中的元素逆序
"""
num1 = [100,200,300]
num1reverse(num1) # [300, 200, 100]
7.列表.sort()
"""
列表.sort() - 将列表中的元素从小到大排序(直接修改原列表中元素的顺序,不会产生新列表)
列表.sort(reversed =True) - 将列表中的元素从大到小排序(直接修改原列表中元素的顺序,不会产生新列表)
"""
"""
sorted 和 sort的区别
sorted 针对所有序列
产生新列表
sort 只针对列表
不会产生新列表
"""
scores = [90, 89, 78, 87, 99, 23]
scores.sort(reverse=True) # 从大到小排
print(scores)
scores.sort() # 从小到大排
print(scores)
4.列表推导式
1.列表推导式
# 列表推导式 - 创建列表的快捷方式
"""
语法1(将序列中的元素按照统一的规则整体变换)
[表达式 for 变量 in 序列]
相当于:
list1 = []
for 变量 in 序列:
list1.append(表达式)
语法2:(对序列中的元素进行筛选/删除)
[表达式 for 变量 in 序列 if 条件语句]
相当于:
list1 = []
for 变量 in 序列:
if 条件语句:
list1.append(表达式)
语法3:
[三目运算符 for 变量 in 序列]
补充:三目运算符
c的三目运算符 --- ?:
表达式1?值1:值2 - 如果表达式的值为True,整个运算结果是值1,否则结果是值2
Python的三目运算符
值1 if 表达式 else 值2 - 如果表达式的值是True,整个运算结果是值1,否则结果是值2
"""
# 练习1:将nums中的所有元素乘以10,产生一个新的列表
nums = [12, 33, 7, 9]
new_nums = [x*10 for x in nums]
print(new_nums)
# 练习2:把列表中所有元素的个位数提取出来产生一个新的列表
num = [12, 23, 45, 123]
new_num = [x%10 for x in num]
# 练习3:利用列表推导式删除scores中小于60的分数
scores = [89, 34, 56, 90, 56, 78, 99]
new_scores = [x for x in scores if x >= 60]
print(new_scores)
# 练习4:利用列表推导式将nums中的所有的偶数除以2,所有的奇数乘以2
nums = [10, 34, 33, 6, 15, 7, 20]
new_nums = [x*2 if x % 2 else x//2 for x in nums]
print(new_nums)
# 练习5:偶数除以2,奇数不变
nums = [10, 34, 33, 6, 15, 7, 20]
new_nums = [x if x % 2 else x//2 for x in nums]
print(new_nums)