一. 列表相关操作
1.列表支持的数学运算符:
a . +、*
列表1 + 列表2 = 将两个列表合并成一个新的列表
list = [10,20,30]
list2 = [340,50,60]
print(list + list2)
'''
[10, 20, 30, 340, 50, 60]
'''
b. 列表 *N / N* (N是正整数)
- 将列表中的元素重复N次产生一个新的列表
list = [10,20,30]
result2 = list * 3
print(result2)
'''
[10, 20, 30, 10, 20, 30, 10, 20, 30]
'''
2. 列表支持的比较运算符
a . 比较是否相等 == / !=
print(list1 == [10,20,30])
b. 比较大小: >、 < 、 >= 、 <=
- 比较大小时候只能两个列表来比
- 比较规则: 比较第一对不相等的元素大小
3. in 和 not in
- 数据 in 列表: 判断列表中是否存在指定数据对应的元素
list = [10,20,30]
print(10 in list) #True
print([10,20] in list) #False
- 数据not in 列表: 判断列表中是否不存在指定数据对应的元素
二. 列表相关函数 :sum、max、min、sorted、len、list
1.sum() ---- 求列表中所有元素的和(列表必须是数字列表)
list = [10,20,30]
print(sum(list))
2. max(列表)
list = [10,20,30]
print(max(list))
3. min(列表)
list = [10,20,30]
print(min(list))
4. sorted(列表), sorted(列表名,reverse = True),为降序排列,不写reverse 默认为False, 是升序排列
- 将列表中的元素按照从小到大的方式(升序)排序,得到新的列表.
- sorted() , 不会直接打印,需要赋予变量名
list = [10,44,60,20,30]
new= sorted(list)
print(new)
#[10, 20, 30, 44, 60]
list = [10,44,60,20,30]
new= sorted(list, reverse= True)
print(new)
#[60, 44, 30, 20, 10]
5. len(列表) -- 获取列表中元素的个数
list = ['abc', 2, 'hello',[1,2,3]]
print(len(list))
# 4
6. list(数据)
- 将指定数据转换成列表(任何容器型数据类型的数据都可以转换成列表,转换的时候直接将容器中的元素转换成列表的元素)
print(list('abc')) #['a', 'b', 'c'] print(list(range(6))) #[0, 1, 2, 3, 4, 5]
三. 列表. 的操作
1. 列表.clear()
- 清空列表(删除列表中所有元素)
list = [10,44,60,20,30]
list.clear()
print(list)
#[]
2. 列表.copy()
- 复制指定列表,产生一个一模一样的新列表并且返回。
list = [10,44,60,20,30]
list1 = list.copy()
print(list1)
- 列表[ : ] 、 列表 * 1 、 列表 + [ ] 效果和 列表.copy() 相同
list = [10,44,60,20,30]
n = list[:]
i = list + []
k = list * 1
print(n)
print(i)
print(k)
#[10, 44, 60, 20, 30]
#[10, 44, 60, 20, 30]
#[10, 44, 60, 20, 30]
3 . count
- 列表. count(数据) - 统计指定列表中指定数据的个数
list = [10,44,60,20,30,10,10,20]
print(list.count(10))
# 3
4. 列表.extend(容器)
- 将容器中所有的元素都添加到列表的最后
my_list = [10, 44, 60, 20, 30, 10, 10, 20]
my_list.append('abc')
print(my_list) #[10, 44, 60, 20, 30, 10, 10, 20, 'abc']
my_list.extend('abc')
print(my_list) #[10, 44, 60, 20, 30, 10, 10, 20, 'abc', 'a', 'b', 'c']
5. 列表.index(指定元素)
- 获取指定元素在列表中对应的索引值(从0开始的索引值)
my_list = [10, 44, 60, 20, 30, 10, 10, 20]
print(my_list.index(10)) # 0
6. 列表.reverse()
- 将列表中的元素 倒叙
my_list = [10, 44, 60, 20, 30, 10, 10, 20]
my_list.reverse()
print(my_list)
#[20, 10, 10, 30, 20, 60, 44, 10]
7. 列表.sort()
- 将列表中的元素升序排序
- 列表.sort(reverse = True) , 列表降序排序 (不产生新列表,只对原列表产生影响,sorted() 会产生新列表)
my_list = [10, 44, 60, 20, 30, 10, 10, 20]
my_list.sort(reverse= True)
print(my_list)
#[60, 44, 30, 20, 20, 10, 10, 10]
四. 列表推导式 - 快速创建列表的表达式
1. 第一种结构
[表达式 for 变量 in 容器]
- 如何工作: 变量每在容器获取一次值,就计算一次表达式
result = [ 10 for i in range(5)]
print(result)
#[10, 10, 10, 10, 10]
result = [ i*8 for i in range(1,10)]
print(result)
#[8, 16, 24, 32, 40, 48, 56, 64, 72]
# 练习1:
利用列表推导式获取nums中所有元素的个位数
nums = [19, 344, 52, 18, 77, 65, 66, 76]
# [9, 4, 2, 8, 7, 5, 6, 6]
nums = [19,344,52,18,77,65,66,76]
result = [(i%10) for i in nums]
print(result)
# 练习2:
利用列表推导式将nums是中所有的元素都乘以2
nums = [10, 2, 4, 5, 20]
# [20, 4, 8, 10, 40]
nums2 = [10,2,4,5,20]
result2 = [i *2 for i in nums2]
print(result2)
2. 第二种结构
[表达式 for 变量 in 容器 if 条件语句]
- 原理: 让变量去容器中取值,一个一个的取,取完为止,每取一个值就判断一次条件是否成立,如果成立就计算表达式的结果作为列表的一个元素
3. 第三种结构(三目运算符)
- 双目运算符: + 、 -、*、 / 、> 、 <
- 单目运算符 : not
- c语言的三目运算符: ?:
#### 条件?值1:值2 (条件为真 运算结果为值1, 否则为值2)
- python的三目运算符: if else
值1 if条件 else 值2 (判断条件是否成立,如果成立结果为值1,否则值2)
三目练习:判断成年
age = int(input('年龄'))
if age < 19:
print('未成年')
else:
print('成年')
# 三目推导式
age = int(input('年龄'))
n = [print('未成年') if age < 19 else print('成年')]
整体练习1(有点绕)
result2 = [x for x in range(1,10) if x % 2]
print(result2)
输出为奇数, 因为if x % 2 进行判断时,答案为True (1)才运行,x为奇数余数才为1,所以这是判断为奇数时才继续运行
练习2:
利用列表推导式提取nums中所有的偶数
nums = [89, 78, 66, 54, 43, 77, 950]
# [78, 66, 54, 950]
nums = [89, 78, 66, 54, 43, 77, 950]
result = [ i for i in nums if i % 2 == 0]
print(result)
练习3
利用列表推导式删除scores中所有的不及格分数
scores = [99, 80, 56, 73, 59, 92, 84]
scores = [99, 80, 56, 73, 59, 92, 84]
result2=[scores.remove(i) for i in scores if i < 60]
print(scores)
练习4
利用列表推导式将nums中所有的偶数都除以2,所有奇数*2
nums = [10, 3, 17, 80, 44, 5]
# [5, 6, 34, 40, 22, 10]
nums = [10, 3, 17, 80, 44, 5]
result3 = [ i//2 if i % 2 ==0 else i*2 for i in nums ]
print(result3)
分析:用的三目运算符, 遍历nums, 如果为偶数,整除2,否则*2.