day06-列表2

day06-列表2

列表相关操作

  1. 数学运算符: +, *

列表1 + 列表2 - 合并两个列表,产生新列表(列表1元素在前, 不影响原列表)

列表 * N, N * 列表 - N个列表合并成一个新列表

  1. 比较运算符:
  1. 比较是否相等: ==, !=
  2. 比较大小 - 两个列表
    比较第一对不相等元素的大小(相同位置上的元素属于一对, 进行比较的一对元素类型要一样,否则报错)
  1. 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)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值