day 7
列表相关的运算符
1.数学运算符: + 、 *
-
列表1 + 列表2 – 将两个列表中的元素合并产生一个新的列表
list1 = [100, 200, 300] list2 = [10, 20, 30] print(list1 + list2)
-
列表*N / N * 列表 – 列表中的元素重复N次产生一个新的列表
print(list2*3) print(list2*1) # --产生一个和原来一样的新的列表
2.比较运算符 > < >= <= == !=
- 补充:不同的类型可以使用==和!= 来比较是否相等,但是不能使用> < >= <= 来比较大小
1)== !=
print([10, 20, 30]==[10, 20, 30]) # True
print([10, 20, 30]==[10, 30, 20]) # Flase
print({10, 20, 30}=={10, 30, 20}) # 集合无序
2)> < >= <=
-
两个列表比较大小,比较的是第一对不相等的元素的大小
print([10,100,200,300]>[20,1]) # Flase 比较元素(从第一个位置开始依次比较 print([10,20,30]>[10,20])
列表相关函数
1. max min
-
max(序列) – 获取序列中最大的元素
-
min(序列) – 获取序列中最小的元素
nums=[10,20,30,23,32,50,40] print(max(nums)) print(min(nums)) num = [10,20,'abc',30,40] --不能 print(max(num)) --报错
2.sum
-
sum(数字序列) – 求序列中所有元素的和
nums=[10,20,30,23,32,50,40] print(sum(nums)) print(sum(range(101)))
3.sorted
-
sorted(序列) – 将序列中的元素从小到大排序,产生一个新的列表
-
sorted(序列,reverse=True) – 从大到小排序
nums=[100,20,305,23,72,50,40] new_nums=sorted(nums) print(new_nums) nums=[100,20,305,23,72,50,40] new_nums=sorted(nums,reverse=True) print(new_nums)
4.len
-
len(序列) – 获取序列中元素的个数
print(len([10,20,30,40,50])) print(len(['abjidfs1234'])) print(len(range(5,100)))
5.list
-
list(数据) – 所有的序列都可以转换成列表(将序列的元素作为列表的元素创建一个新的列表)
print(list('abcdefg')) print(list(range(10))) print(list('你好!世界'))
列表的相关方法
- 列表.append(元素)
- 列表.insert(下标,元素)
- 列表.remove(元素)
- 列表.pop()
1.列表.clear() --清空列表
nums = [10, 20, 30, 40, 50]
nums.clear()
print(nums)
2.列表.copy() – 赋值原来列表,产生一个一样的新的列表
-
列表.copy() --浅拷贝
-
列表[:] 列表*1 列表+[] 都是浅拷贝
nums = [10, 20, 30, 40, 50] new_nums = nums.copy() print(new_nums)
注意:变量在保存数据的时候保存的其实是数据在内存中的地址(Python中的变量全是指针变量)。一个变量直接给另外一个变量赋值,赋的是地址
num = nums num2 = nums[:] num3 = nums * 1 print('num的id:', num, id(num)) print('nums的id:', nums, id(nums)) print('new_nums的id:', new_nums, id(new_nums))
3.列表.count(元素) – 统计列表中指定元素的个数
nums = [10, 20, 30, 40, 50, 10, 10, 80, 45]
a = nums.count(10)
print(a)
print(nums.count(30))
4.列表.extend(序列) – 将序列中的元素全部添加到列表中
append是把[10,20]作为一个元素添加进列表:
nums = [100, 200]
nums.append([10, 20])
print(nums)
extend是把[10,20]里面的元素添加进列表:
nums.extend([10, 20])
print(nums)
nums.extend('abcd')
print(nums)
5.列表.index(元素) --获取元素在列表中的下标值(0开始的下标值)
nums = [10, 20, 30, 40, 50, 10, 10, 80, 45]
result = nums.index(20)
print(result)
有多个相同的,返回第一次出现的下标:
result = num.index(10)
print(result)
列表中没有所查的元素:报错
result=nums.index(100)
print(result)
6.列表.reverse() --列表逆序
num5 = [10, 20, 30, 40, 50]
num5.reverse()
print(num5)
7.排序
-
列表.sort()
-
列表.sort(reverse= True)
-
sorted(列表)
-
sorted(列表,reverse=True)
num5 = [10, 20, 30, 40, 50] result = sorted(num5) print(num5) print(result) num5 = [10, 20, 30, 40, 50] result = num5.sort() print(num5) print(result)
列表推导式
列表推导式 - 快速创建列表的表达式
1.推导式结构1
[表达式 for 变量 in 序列]
– 让变量去序列中取值,一个一个取,
取完为止,每取一个值就将表达式的值作为列表的一个元素
list1 = [10 for x in 'abc']
print(list1)
list2 = [x * 2 for x in range(5, 11)]
print(list2)
练习:使用列表推导式获取nums中所有元素的的个位数
nums = [23, 89, 90, 56, 41, 802]
a = [i % 10 for i in nums]
print(a)
练习2:是用列表推导式将nums中所有的元素乘以10
[230, 890, 900, 560, 410, 8020]
nums = [23, 89, 90, 56, 41, 802]
b = [i * 10 for i in nums]
print(b)
练习3:已知分数列表,将列表中的元素全部换成’及格’ - True 或者’不及格’-False
[‘及格’, ‘及格’, ‘不及格’, ‘及格’, ‘不及格’, ‘及格’]
[True, True, False, True, False, True]
scores = [90, 78, 45, 67, 39, 89]
c = [i > 60 for i in scores]
print(c)
result = ['及格' if i >= 60 else '不及格' for i in scores]
print(result)
练习4:已知一个数字列表,将列表中所有的偶数除以2,所有的奇数乘以2
nums = [23, 89, 90, 56, 41, 802]
[46, 178, 45, 28, 82, 401]
result = [i // 2 if i % 2 == 0 else i * 2 for i in nums]
print(result)
2.推导式结构2
[表达式 for 变量 in 序列 if 条件语句]
创建一个列表,变量去序列中取值,一个一个取,取完为止;
每取一个值就判断条件是否为True,如果为True就计算表达式结果为
列表的元素
result = [x for x in range(10, 21) if x % 2]
print(result)
练习1:使用列表推导式提取nums中所有的奇数
[23, 89, 41]
nums = [23, 89, 90, 56, 41, 802]
result = [x for x in nums if x % 2]
print(result)
练习2:已知一个列表,提取列表中所有的字符串
list1 = [10, 23.9, 'hello', True, '12', 0]
result = [i for i in list1 if type(i) == str]
print(result)
练习3:已知一个列表,提取列表中所有的整数,并且将整数加3
[13, 3]
list1 = [10, 23.9, 'hello', True, '12', 0]
result = [i + 3 for i in list1 if type(i) == int]
print(result)
三目运算符
- c 和java
表达式?值1:值2 -如果表达式的值为真结果就是值1,否则就是值2
- python
值1 if 表达式 else 值2 - 如果表达式的值为True结果就是值1,否则就是值2
age = 28 result='成年' if age >= 18 else '未成年' print(result)
元组
元组就是不可变的列表
查、in和not in、数学运算、比较运算、相关函数 – 元组都支持
1.什么是元组(tuple0)
(元素1,元素2,元素3,…)
不可变的;有序的
空元组
t1=()
print(t1,type (t1))
有一个元素的元组
t2=(10,)
print(t2,type(t2))