day6列表扩展

day6列表
1.列表相关操作

1.数学运算符:+、*

"""
1)列表1 + 列表2:将两个列表中的元素合并产生一个新的列表
例如:[x, y, z] + [m, n] --> [x, y, z, m, n]
2)列表*N(或者N*列表):列表中的元素重复N次产生一个新的列表
"""
num1 = [1, '风筝', True]
num2 = ['小花', 12, '大王', '小王']
print(num1 + num2)  # [1, '风筝', True, '小花', 12, '大王', '小王']
num1 = [1, '风筝', True]
print(num1*2) # [1, '风筝', True, 1, '风筝', True]

2.比较运算符:==、!=、>= 、<=、>、<

"""
1)==、 !=
2)>、<、>=、<=  ---  列表比较大小,比较的是第一对不相等的元素大小
列表1 > 列表2
"""
print([1, 2, 3] == [1, 2, 3])  # True
print([1, 2, 3] == [3, 2, 1])  # False
print([1, 100, 200, 300] > [10, 20]) # False
print([1, 100, 200, 300] > [1, 100]) # True

3.in 和 not in

"""
元素 in 列表 - 判断列表中是否存在指定元素
元素 not in 列表 - 判断列表中是否不存在指定元素
"""
print(10 in [10, 20, 30]) # True
print(100 in [10, 20, 30]) # False
print([10, 20] in [10, 20, 30]) # False
print([10, 20] in [[10, 20], 30]) #True
# 练习1:有两个列表A和B,使用列表C来获取两个列表中的公共的元素
# > 例如: A = [1, 'a', 4, 90]  B = ['a', 8, 'j', 1] --> C = [1, 'a']
A = [1, 2, 'a', 'c', 'b']
B = [5, 2, 'c', 'a', 1]
C =[]
for x in A:
	if x in B and not in C:
	C.append(x)
print(C)
	

# 练习2:有一个长度是10的列表,数组内有10个人名,要求去掉重复的
# > 例如:names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三'] -> names = ['张三', '李四', '大黄']
names = ['小花', '张起灵', '小红', '小花', '小明', '小红', '小红', '小明', '小碧']
new_names = []
for x in names:
    if x not in new_names:
        new_names.append(x)
print(new_names)
2.列表相关函数

1.max和min(求最大值和最小值)

"""
max(序列) - 获取序列中元素的最大值
min(序列) - 获取序列中元素的最小值
注意:序列中的元素之间必须支持比较大小操作
"""
nums = [78, 23, -9, 34, 89, 54]
print(max(nums))  # 89
print(min(nums))  # -9
# 求最大值、最小值的套路
nums = [78, 23, -9, 34, 89, 54]
# 最大值套路
max1 = nums[0]
for x in nums[1:]:
    if x > max1:
        max1 = x
print(max1)
# 最小值套路
min1 = nums[0]
for x in nums[1:]:
    if x < min1:
        min1 = x
print(min1)

2.求和sum

"""
sum(数字序列)  -  计算序列中所有元素的和
"""
nums = [78, 23, -9, 34, 89, 54]
print(sum(nums))

3.sorted(排序)

"""
sorted(序列) - 将序列中的元素从小到大(升序)排序,产生一个新的列表
sorted(序列,reverse = True) - 将序列中的元素从大到小(降序)排序,产生一个新的列表
"""
nums = [78, 23, -9, 34, 89, 54]
new_nums1 = sorted(nums)
print(new_nums1)
new_num2 = sorted(nums,reverse=True)
print(new_num2)

4.len

# len(序列) - 统计序列中元素个数
print(len('abc')) # 3

5.list

# list(数据) - 将指定的数据转换成列表(所有的序列可以转换成列表;是将序列中的元素作为列表的元素)
print(list('abc123')) # ['a', 'b', 'c', '1', '2', '3']
print(list(range(3))) # [0, 1, 2]

6.enumerate - 枚举

"""
[10, 20, 30] --> [(0, 10), (1, 20), (2, 30)]
for  变量1, 变量2 in enumerate(列表):
	变量1是每个元素的下标
	变量2是每个元素
"""
nums = [78, 23, -9, 34, 89, 54]
for index, item in enumerate(nums):
    print(index, item)
3.列表相关的方法

1列表.clear() - 清空列表

nums = [20, 98, 65, 23]
nums.clear()
print(nums)  # []

2.列表.copy()

"""
列表.copy() - 复制原列表产生一个一模一样的新列表(即克隆)
如果直接用一个变量给另外一个变量赋值,赋的是地址。赋值后两个变量指向同一个数据
注意:列表[:]、列表*1、列表 + []的功能和列表.copy()的效果一样
"""
list1 = [10, 'abcd', 20]
list2 = list1.copy()
print(list2)

3.列表.count()

"""
列表.count() - 统计指定元素在列表中出现的次数
"""
num = [10, 23, 0, 12, 10, 34, 23, 23, 50]
print(num.count(10)) # 2
print(num.count(-1)) # 0

4.列表.extend(序列)

"""
列表.extend(序列)  - 将序列中的元素全部添加到列表中
"""
nums = [100, 200]
scores = [78, 98, 99]
nums.extend(scores)
print(nums)   # [100, 200, 78, 98, 99]

5.列表.index(元素)

"""
列表.index(元素) - 获取元素的下标值(0开始的下标值)
nums = ['小明', '张三', '李四', '小明']
print(nums.index('李四'))  # 2
"""

6.列表.reverse()

"""
列表.reverse()  -  逆序(倒序);将列表中的元素逆序
"""
num1 = [100,200,300]
num1reverse(num1)  # [300, 200, 100]

7.列表.sort()

"""
列表.sort()  - 将列表中的元素从小到大排序(直接修改原列表中元素的顺序,不会产生新列表)
列表.sort(reversed =True) - 将列表中的元素从大到小排序(直接修改原列表中元素的顺序,不会产生新列表)
"""
"""
sorted 和 sort的区别
sorted 针对所有序列
		产生新列表
sort 只针对列表
	 不会产生新列表
"""
scores = [90, 89, 78, 87, 99, 23]
scores.sort(reverse=True) # 从大到小排
print(scores)
scores.sort() # 从小到大排
print(scores)
4.列表推导式

1.列表推导式

# 列表推导式 - 创建列表的快捷方式
"""
语法1(将序列中的元素按照统一的规则整体变换)
[表达式 for 变量 in 序列]
相当于:
list1 = []
for 变量 in 序列:
	list1.append(表达式)

语法2:(对序列中的元素进行筛选/删除)
[表达式 for 变量 in 序列 if 条件语句]
相当于:
list1 = []
for 变量 in 序列:
	if 条件语句:
		list1.append(表达式)


语法3:
[三目运算符 for 变量 in 序列]
补充:三目运算符
c的三目运算符 --- ?:
表达式1?值1:值2 - 如果表达式的值为True,整个运算结果是值1,否则结果是值2
Python的三目运算符
值1 if 表达式 else 值2 - 如果表达式的值是True,整个运算结果是值1,否则结果是值2
"""
# 练习1:将nums中的所有元素乘以10,产生一个新的列表
nums = [12, 33, 7, 9]
new_nums = [x*10 for x in nums]
print(new_nums)
# 练习2:把列表中所有元素的个位数提取出来产生一个新的列表
num = [12, 23, 45, 123]
new_num = [x%10 for x in num]
# 练习3:利用列表推导式删除scores中小于60的分数
scores = [89, 34, 56, 90, 56, 78, 99]
new_scores = [x for x in scores if x >= 60]
print(new_scores)
# 练习4:利用列表推导式将nums中的所有的偶数除以2,所有的奇数乘以2
nums = [10, 34, 33, 6, 15, 7, 20]
new_nums = [x*2 if x % 2 else x//2 for x in nums]
print(new_nums)
# 练习5:偶数除以2,奇数不变
nums = [10, 34, 33, 6, 15, 7, 20]
new_nums = [x if x % 2 else x//2 for x in nums]
print(new_nums)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值