day06-列表2
列表相关操作
- 数学运算符: +, *
列表1 + 列表2 - 合并两个列表,产生新列表(列表1元素在前, 不影响原列表)
列表 * N, N * 列表 - N个列表合并成一个新列表
- 比较运算符:
- 比较是否相等: ==, !=
- 比较大小 - 两个列表
比较第一对不相等元素的大小(相同位置上的元素属于一对, 进行比较的一对元素类型要一样,否则报错)
- in 和 not in
元素 in 列表 - 判断列表中是否存在指定元素
元素 not in 列表 - 判断列表中是否不存在指定元素
- 去重练习
# 方法1:
names = ['张三', '李四', '张三', '王五', '张三', '李四']
# ['张三', '李四', '王五']
count = 0
while count < len(names):
if names[count] in names[count + 1:]:
del names[count]
else:
count += 1
print(names)
# 方法2:
names = ['张三', '李四', '张三', '王五', '张三', '李四']
new_names = []
for i in names:
if i not in new_names:
new_names.append(i)
del names
print(new_names)
# 方法3:
names = ['张三', '李四', '张三', '王五', '张三', '李四']
for i in range(len(names)-1, -1, -1):
if names[i] in names[:i]:
del names[i]
print(names)
# 方法4:使用集合去重
names = ['张三', '李四', '张三', '王五', '张三', '李四']
new_names = list(set(names))
print(new_names)
# 方法5:
names = ['张三', '李四', '张三', '王五', '张三', '李四']
for _ in range(len(names)):
current_name = names.pop()
if current_name not in names:
names.insert(0, current_name)
print(names)
列表相关函数
sum, max, min, sorted, len, list, (reversed)
都把操作的列表写在函数后面的括号里作为要传入的实参
sum(序列) - 求数字序列中所有元素的和
max(序列) - 求序列中最大的元素
min(序列) - 求序列中最小的元素
sorted(序列) - 将序列中的元素从小到大排序, 产生一个新的列表
sorted(序列, reverse = True) - 将序列中的元素从大到小排序, 产生一个新的列表
len(序列) - 获取序列中元素的个数(迭代器, 生成器除外)
list(序列) - 将指定的序列转换成列表, 将序列中的元素作为列表的元素(所有的序列都可以转换成列表)
列表相关方法
列表.方法名()
-
列表.clear() - 清空列表
-
列表.copy() - 复制原列表, 产生一个一摸一样的新列表
-
列表.count(元素) - 统计指定元素在列表中出现的次数(个数)
-
列表.extend(序列) - 将序列中的元素全部添加到列表的最后
-
列表.index(元素) - 获取指定元素在列表中的下标值(找不到报错)
-
列表.reverse() - 将列表中元素逆序(直接修改原列表,没有新的列表产生
-
列表.sort() - 将列表中的元素从小到大排序(对原列表操作, cpu多,内存少)
列表.sort(reverse=True) - 将列表中元素从大到小排序(对原列表操作, cpu多,内存少)
sorted(序列) - 产生新列表(cpu少,内存多)
sorted(序列, reverse = True) - 产生新列表(cpu少,内存多)
列表推导式
"""
结构1:
[表达式 for 变量 in 序列]
功能: 创建一个列表, 列表中的元素是表达式的结果 - 让变量去序列中取值,一个一个的取,每取一个值就计算一次表达式的结果
应用: 将原序列中所有的元素经过统一的变换,转换成新的列表
结构2:
[表达式 for 变量 in 序列 if 条件语句]
功能: 创建一个列表, 列表中的元素是表达式的结果 - 让变量去序列中取值,一个一个的取,取一次值判断一次条件语句结果是否为True,
为True就计算表达式的结果,否则不计算
应用: 提取序列中满足某个条件的所有元素
"""
练习1:提取nums中所有元素的个位数
nums = [23, 78, 562, 98, 71, 99]
# [3, 8, 2, 8, 1, 9]
new_nums = [x % 10 for x in nums]
print(new_nums)
练习2:将nums中所有的元素都乘以10
nums = [23, 78, 562, 98, 71, 99]
# [230, 780, 5620, 980, 710, 990]
new_nums = [x * 10 for x in nums]
print(new_nums)
练习3: 用推导式删除scores中小于60的元素
scores = [30, 56, 78, 91, 83, 88, 45, 57, 60]
new_scores = [x for x in scores if x >= 60]
print(new_scores)
三目运算符
"""
1)C及java等中的三元运算符 - ?:
条件语句?值1:值2 - 如果条件语句为真,整个表达式结果是值1
jS多元运算符:
条件语句1?条件语句2?条件语句3?值1:值2:值3...
2)python中的三目运算符 - if-else
值1 if 条件语句 else 值2 - 如果条件语句为True,整个表达式的结果是值1, 否则结果为值2
"""
练习: 将scores中的元素变成’及格’或者’不及格’
scores = [30, 56, 78, 91, 45, 57, 60]
new_scores = ['及格' if x >= 60 else '不及格' for x in scores]
print(new_scores)