01.列表相关的运算符
1.数学运算符:+、*
列表1+列表2 - 将两个列表中的元素合并产生一个新的列表
list1=[100,200,300]
list2=[10,20]
print(list1+list2) #[100,200,300,10,20]
列表*N - 列表中的元素重复N次产生一个新的列表
print(list2*3) #[10,20,10,20,10,20]
print(list2*1) #[10,20]
比较运算符:>、<、>=、<=、==、!=**
补充:不同的类型可以用==和!=来比较是否相等,但是不能使用>、<、>=、<=来比较大小
#1)==、!=
print([10,20,30]==[10,20,30]) #True
print([10,20,30]==[10,30,20]) #False (列表有序)
print({10,20,30}=={10,20,30}) #True (集合无序)
#2)>、<、>=、<=
两个列表比较大小,比较的是第一对儿不相等的元素的大小
print([10,100,200,300]>[20,1]) #False
print([10,100,200,300]>[10,20,1000000,800]) #True
print([10,20,30]>[10,20]) #True
02.列表的相关函数
1.max、min
max(序列) - 获取序列中的最大元素
min(序列) - 获取序列中的最小元素
nums=[10,29,78,34,56,5,72]
print(max(nums))
print(min(nums))
2.sum
sum(数字序列) - 求序列中所有元素的和
nums=[10,29,78,34,56,5,72]
print(sum(nums)) #284
print(sum(range(101))) #5050
3.sorted
sorted(序列) - 将序列中的元素从小到大排序、产生一个新的列表
sorted(序列,reverse=True) - 将序列中的元素从大到小排序、产生一个新的列表
nums=[10,29,78,34,56,5,72]
new_nums=sorted(nums)
print(new_nums) #[5, 10, 29, 34, 56, 72, 78]
nums=[10,29,78,34,56,5,72]
new_nums=sorted(nums,reverse=True)
print(new_nums) #[78, 72, 56, 34, 29, 10, 5]
4.len
len(序列) - 获取序列中元素的个数
print(len([10,20,30])) #3
print(len(['abc123'])) #1
print(len(range(5,100))) #95
5.list
list(序列) - 将序列的元素作为列表的元素创建一个新的列表
print(list('abc')) #['a', 'b', 'c']
print(list(range(3))) #[0, 1, 2]
03.列表的相关方法
1.列表.clear() - 清空列表
nums=[1,56,565,459,3]
nums.clear()
print(nums) #[]
2.列表.copy() - 复制列表产生一个一模一样的新列表
列表.copy()-浅拷贝
列表[:]、列表*1、列表+[] 都是浅拷贝
nums=[1,56,565,459,3]
new_nums1=nums.copy()
print(new_nums1) #[1,56,565,459,3]
#变量在保存数据的时候保存的其实是数据在内存中的地址(python中的变量全是指针变量)
#一个变量直接给另外一个变量赋值,赋的是地址
new_nums2=nums
print(new_nums2)
print('nums的id',id(nums)) #nums的id 2370805777024
print('new_nums1的id',id(new_nums1)) #new_nums1的id 2370805444288
print('new_nums2的id',id(new_nums2)) #new_nums2的id 2370805777024
nums.append(100)
print(new_nums1) #[1, 56, 565, 459, 3]
print(new_nums2) #[1, 56, 565, 459, 3, 100]
3.列表.count(元素) - 统计列表中指定元素的个数
nums=[10,20,34,89,10,34,80,10]
print(nums.count(10))
c1=nums.count(5)
print(c1) #0
4.列表.extend(序列) - 将序列中的元素全部添加到列表中
nums=[100,200]
nums.extend([10,20])
print(nums) #[100, 200, 10, 20]
nums.extend('abc')
print(nums) #[100, 200, 10, 20, 'a', 'b', 'c']
5.列表.index(元素) - 获取元素在列表中的下标值(0开始的下标值)
如果元素有多个,返回第一个的下标;如果元素不存在会报错
nums=[10,20,34,89,10,34,80,10]
result=nums.index(20)
print(result) #1
result=nums.index(89)
print(result) #3
result=nums.index(10)
print(result) #0
'''
result=nums.index(100)
print(result) #报错:ValueError: 100 is not in list
'''
6.列表.reverse() - 列表逆序
nums=[10,28,90,67,20]
nums.reverse()
print(nums) #[20, 67, 90, 28, 10]
nums=[10,28,90,67,20]
result=nums[::-1]
print(result) #[20, 67, 90, 28, 10]
7.排序
列表.sort()/列表.sort(reverse=True)
sorted(序列)/sorted(序列,reverse=True)
nums=[10,28,90,67,20]
result=sorted(nums)
print(nums) #[10, 28, 90, 67, 20]
print(result) #[10, 20, 28, 67, 90]
nums=[10,28,90,67,20]
result=nums.sort()
print(nums) #[[10, 20, 28, 67, 90]
print(result) #None
04.列表推导式
列表推导式 - 快速创建列表的格式
1.推导式结构1
[表达式 for 变量 in 序列] - 让变量取序列中取值,一个一个的取,取完为止,每取一个值就将表达式的值作为列表的一个元素
list1=[10 for x in 'abc']
print(list1) #[10, 10, 10]
list2=[x*2for x in range(5,11) ]
print(list2) #[10, 12, 14, 16, 18, 20]
练习: 使用列表推导式获取nums中所有元素的个位数
#[3, 9, 0, 6, 1, 2]**
nums = [23, 89, 90, 56, 41, 802]
list1=[x%10 for x in nums]
print(list1)
练习2:是用列表推导式将nums中所有的元素乘以10
[230, 890, 900, 560, 410, 8020]
nums = [23, 89, 90, 56, 41, 802]
list1=[x*10 for x in nums]
print(list1)
练习3:已知分数列表,将列表中的元素全部换成’及格’ - True 或者’不及格’-False
[‘及格’, ‘及格’, ‘不及格’, ‘及格’, ‘不及格’, ‘及格’]
[True, True, False, True, False, True]
scores = [90, 78, 45, 67, 39, 89]
list1=[x>=60 for x in scores]
print(list1)
result=['及格'if x>=60 else '不及格' for x in scores]
print(result)
练习4:已知一个数字列表,将列表中所有的偶数除以2,所有的奇数乘以2
[46, 178, 45, 28, 82, 401]
nums = [23, 89, 90, 56, 41, 802]
result=[int(x/2) if x%2==0 else x*2 for x in nums]
print(result)
2.推导式结构2
[表达式 for 变量 in 序列 if 条件语句]
创建一个列表、变量去序列中取值,一个一个的取,取完为止,每取一个值就判断条件语句是否为True。如果为True就计算表达式的结果为列表的元素;不是就继续取下一个
result=[x for x in range(10,21)if x%2]
print(result) #[11, 13, 15, 17, 19]
练习1:使用列表推导式提取nums中所有的奇数
#[23, 89, 41]
nums = [23, 89, 90, 56, 41, 802]
result=[x for x in nums if x%2]
print(result) #[23, 89, 41]
练习2:已知一个列表,提取列表中所有的字符串
list1 = [10, 23.9, 'hello', True, '12', 0]
result=[x for x in list1 if type(x)==str]
print(result)
练习3:已知一个列表,提取列表中所有的整数,并且将整数加3
#[13, 3]
list1 = [10, 23.9, 'hello', True, '12', 0]
result=[x+3 for x in list1 if type(x) ==int]
print(result)
05.补充三目运算符
C和Java:
表达式?值1:值2 -如果表达式的值为真结果就是值1,否则结果是值2
python:
值1 if 表达式 else 值2 -如果表达式的值为True结果就是值1,否则结果是值2
age=8
result='成年' if age>=18 else '未成年'
print(result)
06.元祖
元祖是不可变的列表
查、in和not in 、数学运算、比较运算、相关函数 - 元祖都支持
1.什么是元祖(tuple)
(元素1,元素2,元素3,…)
不可变的;有序
空元祖
t1=()
print(t1,type(t1)) #() <class 'tuple'>
有一个元素的元祖
t2=(10,)
print(t2,type(t2)) #(10,) <class 'tuple'>
t3=(12,56,78,96,42,36,72)
print(t3[1]) #56
print(t3[-1]) #72
print(t3[-3:]) #(42, 36, 72)