day06-列表笔记

列表相关操作
1. 列表的数学运算:+,*

1)列表+列表 -把两个列表合并产生一个新的列表(不会修改原本的两个列表)

2)列表*N -列表重复N次产生一个新列表

list1 = [1, 2, 3]
list2 = [10, 20, 30]
print(list1 * 3)  # [1, 2, 3, 1, 2, 3, 1, 2, 3]
print(list1 + list2)  # [1, 2, 3, 10, 20, 30]
2.列表的比较运算:==,!=,>=,<=,<,>
1) 比较相等

因为列表是有序的,所以列表的相等必须是一模一样的

2)比较大小

列表比较大小跟列表的长度无关,比较的是第一对不相等的元素的大小(在两个列表下标相等的一对)

print([1,2,3]==[1,3,2])	# False
print([10,20,30,-1] > [100])	# False
3. in 和 not in

元素 in 列表 - 判断列表是否存在该指定元素

元素 not in 列表 – 判断列表中是个否不存在该指定元素

print( 10 not in [10,20,30]) # False
print(10 in [10,20,30]) # True
# 6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
names = ['张三', '李四', '大黄', '小花', '张三', '李四', '小花', '张三', '李四', '大黄']
new_names = []
for item in names:
    if item not in new_names:
        new_names.append(item)
print(new_names)
列表的相关函数和方法
1.函数

1)max,min函数 ---- max(列表),min(列表)----获取列表中的最大值和最小值

2)sum(数字序列) ---- 求数字序列中所有元素和

3)a. sorted(序列) ---- 将序列中的元素按照升序排序

​ b. sorted(序列,reverse = True) ------ 将序列中的元素按照降序排序

4)len(序列) -----获取序列的长度,也就是序列中元素的个数

5)list(数据) ------ 将指定的数据转换成列表

所有的序列都可以转换成列表,转换的时候是将序列中的元素转换成列表的元素
list1 = [10, 30, 20, 2, 100]
print(max(list1))
print(min(list1))
# 100
# 2
list1 = [10, 30, 20, 2, 100]
print(sum(list1))


result = sorted(list1)
print(result)

result = sorted(list1, reverse=True)
print(result)

result = list('abc')
print(result)
'''
162
[2, 10, 20, 30, 100]
[100, 30, 20, 10, 2]
['a', 'b', 'c']
'''
2.方法

1)clear — 列表.clear() ----清空列表
2)copy - – 列表.copy() ----- 列表的拷贝和列表[:]功能相同
3)count — 列表.count(元素) ----统计列表中指定元素出现的个数
(统计列表中没有的元素也不会报错,会返回0)
4)extend — 列表.extend(序列) — 将序列中的元素全部添加到列表中
5)index ---- 列表.index(下标) ---- 获取指定元素在列表中的下标(从0开始的下标)
有多个,只获取第一个的下标值;元素不存在会报错
6)reverse -----将列表逆序
7)sort ---- 列表.sort(reverse=True/False) -----默认为False升序排序

# clear
nums = [10, 20, 30, 20, 10]
nums.clear()
print(nums) # []
# copy
nums = [10, 20, 30, 20, 10]
new_nums = nums.copy
print(new_nums) # [10, 20, 30, 20, 10]
# count
nums = [10, 20, 30, 20, 10]
print(nums.count(10)) # 2
print(nums.count(100))# 0
# extend
nums = [10, 20, 30, 20, 10]
nums.append((1,2,3))
print(nums) # [10, 20, 30, 20, 10, (1, 2, 3)]
nums.extend((1,2,3))
nums.extend('abc')
print(nums)# [10, 20, 30, 20, 10, (1, 2, 3), 1, 2, 3, 'a', 'b', 'c']
# index
nums = [10, 20, 30, 20, 10]
print(nums.index(10)) # 0 
print(nums.index(30)) # 2
# print(nums.index(100))    # ValueError: 100 is not in list
# sort
nums = [10, 20, 30, 20, 10]
nums.sort()
print(nums) # [10, 10, 20, 20, 30]
result = sorted(nums,reverse=True)
print(nums)# [10, 10, 20, 20, 30]
print(result)# [30, 20, 20, 10, 10]
列表推导式 ----快速创建列表的推导式
1. [表达式 for 变量 in 序列] — 对序列中的元素进行统一变换得到一个新列表
nums=[a*2 for a in range(10)]
print(nums) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# 练习:使用列表推导式,提取列表中元素的十位数
nums = [56, 738, 92, 351, 50]     # [5, 3, 9, 5, 5
new_nums = [item % 100 // 10 for item in nums]
print(new_nums) # [5, 3, 9, 5, 5]
# 练习2:将list1中的元素下标是0的元素全部取出来
[10, -20, 9, 80]
list1 = [
    [10, 20],
    [-20, 30],
    [9, 120],
    [80, -100]
]
new_list1 = [children_list[0] for children_list in list1]
print(new_list1) # [10, -20, 9, 80]
2.[表达式 for 变量 in 序列 if 条件语句]
# 练习1: 利用列表推导式,将nums中所有的偶数提取出来
# [34, 56, 12]
nums = [19, 34, 56, 77, 9, 12]
new_nums = [x for x in nums if not x % 2]
print(new_nums) # [34, 56, 12]
# 练习2:利用列表推导式,将nums中所有的数字提取出来
# [12, 2.34, 9]
nums = [12, 2.34, 'abc', 9, '009']
# new_nums = [x for x in nums if type(x) in [int, float]]
new_nums = [x for x in nums if type(x) in (int, float)]
print(new_nums) # [12, 2.34, 9]
3.与三目运算符组合
# 练习5:将列表中所有的数字除以10, 如果不是数字就不动
# [3.4, 0.345, 'abc', 8.9, '12', 0.9]
list1 = [34, 3.45, 'abc', 89, '12', 9]
# new_nums = [round(x / 10,3) if type(x) in [int, float] else x for x in list1]
new_nums = [x / 10 if type(x) in [int, float] else x for x in list1]
print(new_nums) # [3.4, 0.34500000000000003, 'abc', 8.9, '12', 0.9]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假发别带歪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值