列表和元组
列表相关操作和相关函数
1. 列表相关操作
-
数学运算符 : + 、*
列表1 + 列表2 - 将这两个列表合并成一个新的列表
list1 = [10,20,30] list2 = [100,200] result = list1 + list2 print(result) # [10,20,30,100,200]
列表 * N - 将列表中的元素重复N产生一个新的列表,N表示整数
list1 = [10,20,30] print(list1*2) #[10, 20, 30, 10, 20, 30]
-
比较运算符:>、<、>=、<=、==、!=
① 比较相等: == 、!=
list1 = [10,20,30] print(list1 == [10,20,30]) #True print(list1 == [10,200,30]) #False
② 比较大小:>、<、>=、<=
list1 = [10,20,30] list2 = [1,1000,30000,40000] list3 = [10,1000,30000,40000] print(list1>list2) #True print(list1>list3) #False #两个列表比较大小,比较的是第一对不相等元素的大小
-
in 和 not in
语法: 元素 in 列表 —— 判断指定列表中是否存在指定元素
元素 not in 列表 —— 判断指定列表中是否不存在指定元素
print(10 in [10,2,3]) #True print([10,2] in [10,2,3]) #False print([10,2] in [[10,2,3]]) #True
2. 相关函数(系统函数):sum、max、min、len、sorted、list
sum(列表) #求列表中所有元素的和(列表必须是数字列表)
max(列表) #求列表中所有元素的最大值
min(列表) #求列表中所有元素的最小值
len(列表) #求列表中元素的个数
sorted(列表) #将列表中的元从小到大排序,产生一个新的列表
sorted(列表,reverse=True)#将列表中的元从大到小排序,产生一个新的列表
list - 将其他数据转换成列表
list (数据) - 将指定数据转换成列表;{ 所有的序列都可以转换成列表:字符串,range ;将其他序列转换成列表的时候直接将序列的元素作为列表的元素 }
result = list('abc')
result1 = list(range(5))
print(result) #['a','b','c']
print(result1) #[0,1,2,3,4]
列表相关方法
列表.clear() - 清空列表
列表.copy() - 复制指定列表产生一个一样的新列表,将新的列表返回
直接用一个变量给另一个变量赋值,赋的是地址,赋值后会导致两个变量同时指向同一块内存区域。
列表.count(元素) - 统计列表中指定元素的个数。
列表.extend(序列) - 将序列中所有的元素都添加到列表中。
list1 = [10,20,30]
list1.extend([100,200])
print(list1) #[10,20,30,100,200]
列表.index(元素) - 获取元素在列表中对应的下标(返回是0开始的那个下标) 如果元素不存在会报错,如果元素有多个,只返回最前面那个元素的下标。
列表.reverse() - 列表倒序
列表.sort() - 将列表元素从小到大排序,不产生新的列表,在原列表直接修改
列表.sort(reverse=True) - 将元素从大到小排序,不产生新的列表,在原列表直接修改
sorted(序列,reverse=True) - 将元素从大到小排序,产生新的列表。
列表推导式
-
列表推导式 —— 创建列表的表达式,主要用于对元素进行变换和筛选
① 结构 1 :[表达式 for 变量 in 序列] —— 原理:创建一个列表( 让变量去序列中取值,一个一个的取,取一个值就计算一次表达式的结果并且将计算结果作为列表的元素 )
作用:将原序列中的元素按照指定规则( 表达式 )进行统一变换得到一个列表
② 结构 2 :[表达式 for 变量 in 序列 if 条件语句] —— 原理:让变量去序列中取值,一个一个的取,取一个值就判断一次条件语句是否成立,如果成立才计算表达式的结果,并且将结果作为列表的元素
nums = [28,10,81,301,22] # 将nums中所有元素乘二 print([x*2 for x in nums]) # 基于nums得到[8,0,1,1,2] print([x%10 for x in nums]) # 基于nums得到[10,1,9,4,4] print([x%10+x//10%10+x//100 for x in nums]) # 基于nums得到[T,T,F,F,T] print([x%2==0 for x in nums]) # 基于nums得到[81,301] print([x for x in nums if x % 2]) list1 = [10, '12.3', 1.23, 20, 'abc', True] # 练习6:基于list1,得到 [10, 20] print ([x for x in list1 if type(x)==int]) scores = [18, 89, 67, 90, 45, 34, 12, 89] # [89, 67, 90, 89] print([x for x in scores if x >= 60])
元组
- 认识元组
是容器;将()作为容器的标志里面多个元素用逗号隔开:(元素1,元素2,元素3)
不可变的(不支持增删改)
有序的
# 空元组 无意义
t1 = ()
# 单个元素的元组(重要!!!!):必须在唯一的元素后加逗号
t2 = (20,)
- 元组就是不可变的列表
列表中和增删改无关的操作,元组都支持
-
相关函数:sum、max、min、len、sorted
-
部分相关方法:count、index
-
元素不只是不可变的列表
① 单个元素的元组:(元素,)
② 在没有歧义的情况下,元组的()可以省略。
③ 获取元素的时候,可以让变量的个数和元组中元素的个数一致
names=(钢铁侠,蜘蛛侠,猪猪侠,黑寡妇,绿巨人) x,*y = names print(x,y) # 钢铁侠 ['蜘蛛侠', '猪猪侠', '黑寡妇', '绿巨人'] *z,k = names print(z,k) # ['钢铁侠', '蜘蛛侠', '猪猪侠', '黑寡妇'] 绿巨人