标签:10 20 推导 nums day7 列表 result print
day7-列表和列表推导式
1.数学运算符:+、*
# 列表1 + 列表2 - 将两个列表中的元素合并产生一个新的列表
list1 = [100, 200, 300]
list2 = [10, 20]
print(list1 + list2) # [100, 200, 300, 10, 20]
# 列表 * N / N * 列表 - 列表中的元素重复N次产生一个新的列表
print(list2 * 3) # [10, 20, 10, 20, 10, 20]
print(list2 * 1) # [10, 20]
2. 比较运算符:>、<、>=、<=、==、!=
# 补充:不同的类型可以是用==和!=来比较是否相等,但是不能使用>、<、>=、<=来比较大小
# 1)==、!=
print([10, 20, 30] == [10, 20, 30]) # True
print([10, 20, 30] == [10, 30, 20]) # False (列表有序)
print({10, 20, 30} == {30, 20, 10}) # True (集合无序)
# 2)>、<、>=、<=
# 两个列表比较大小,比较的是第一对儿不相等的元素的大小
print([10, 100, 200, 300] > [20, 1])
print([10, 100, 200, 300] > [10, 20, 100000000, 800, 9000])
print([10, 20, 30] > [10, 20])
4. max、min
# max(序列) - 获取序列中最大的元素
# min(序列) - 获取序列中最小的元素
nums = [10, 29, 78, 34, 56, 5, 72]
print(max(nums))
print(min(nums))
# nums = [10, 'abc', 23, 8]
# print(max(nums)) # 报错!
# students = [
# {'name': '小明', 'age': 18, 'gender': '男', 'score': 99},
# {'name': 'stu2', 'age': 23, 'gender': '女', 'score': 90},
# {'name': 'stu3', 'age': 19, 'gender': '女', 'score': 81},
# {'name': 'stu4', 'age': 30, 'gender': '男', 'score': 77},
# {'name': 'stu5', 'age': 25, 'gender': '男', 'score': 86}
# ]
#
# print(max(students, key=lambda x: x['score']))
# 2. sum
# sum(数字序列) - 求序列中所有元素的和
nums = [10, 29, 78, 34, 56, 5, 72]
print(sum(nums))
print(sum(range(101)))
# 3.sorted
# sorted(序列) - 将序列中的元素从小到大排序,产生一个新的列表
# sorted(序列, reverse=True) - 将序列中的元素从大到小排序,产生一个新的列表
nums = [10, 29, 78, 34, 56, 5, 72]
new_nums = sorted(nums)
print(new_nums) # [5, 10, 29, 34, 56, 72, 78]
nums = [10, 29, 78, 34, 56, 5, 72]
new_nums = sorted(nums, reverse=True)
print(new_nums) # [78, 72, 56, 34, 29, 10, 5]
# 4. len
# len(序列) - 获取序列中元素的个数
print(len([10, 20, 30]))
print(len('abc123'))
print(len(range(5, 100)))
# 5.list
# list(序列) - 将序列的元素作为列表的元素创建一个新的列表
print(list('abc')) # ['a', 'b', 'c']
print(list(range(3))) # [0, 1, 2]
5.列表的相关方法
# 列表.append(元素)
# 列表.insert(下标, 元素)
# 列表.remove(元素)
# 列表.pop()
# 1. 列表.clear() - 清空列表
nums = [10, 20, 34, 89]
nums.clear()
print(nums) # []
# 2. 列表.copy() - 复制列表产生一个一模一样的新列表
# 列表.copy() - 浅拷贝
# 列表[:]、列表*1、列表+[] 都是浅拷贝
nums = [10, 20, 34, 89]
new_nums1 = nums.copy()
print(new_nums1) # [10, 20, 34, 89]
# 变量在保存数据的时候保存的其实是数据在内存中的地址(Python中的变量全是指针变量)。一个变量直接给另外一个变量赋值,赋的是地址
new_nums2 = nums
print(new_nums2) # [10, 20, 34, 89]
print('nums的id:', id(nums)) # 4366826816
print('new_nums1的id:', id(new_nums1)) # 4366516864
print('new_nums2的id:', id(new_nums2)) # 4366826816
nums.append(100)
print(new_nums1) # [10, 20, 34, 89]
print(new_nums2) # [10, 20, 34, 89, 100]
# 3. 列表.count(元素) - 统计列表中指定元素的个数
nums = [10, 20, 34, 89, 10, 34, 80, 10]
print(nums.count(10)) # 3
c1 = nums.count(5)
print(c1) # 0
# 4. 列表.extend(序列) - 将序列中的元素全部添加到列表中
nums = [100, 200]
# nums.append([10, 20])
# print(nums) # [100, 200, [10, 20]]
nums.extend([10, 20])
print(nums) # [100, 200, 10, 20]
nums.extend('abc')
print(nums) # [100, 200, 10, 20, 'a', 'b', 'c']
# 5. 列表.index(元素) - 获取元素在列表中的下标值(0开始的下标值)
# 如果元素有多个返回第一个的下标;如果元素不存在会报错。
nums = [10, 20, 34, 89, 10, 34, 80, 10]
result = nums.index(20)
print(result) # 1
result = nums.index(89)
print(result) # 3
result = nums.index(10)
print(result) # 0
# result = nums.index(100) # 报错:ValueError: 100 is not in list
# 6.列表.reverse() - 列表逆序
nums = [10, 28, 90, 67, 20]
nums.reverse()
print(nums) # [20, 67, 90, 28, 10]
nums = [10, 28, 90, 67, 20]
result = nums[::-1]
print(result) # [20, 67, 90, 28, 10]
# 7. 排序
# 列表.sort() / 列表.sort(reverse=True)
# sorted(序列) / sorted(序列, reverse=True)
nums = [10, 28, 90, 67, 20]
result = sorted(nums)
print(nums) # [10, 28, 90, 67, 20]
print(result) # [10, 20, 28, 67, 90]
nums = [10, 28, 90, 67, 20]
result = nums.sort()
print(nums) # [10, 20, 28, 67, 90]
print(result) # None
6.列表推导式
# 列表推导式 - 快速创建列表的表达式
# 1.推导式结构1
"""
[表达式 for 变量 in 序列] - 让变量去序列中取值,一个一个的取,取完为止,每取一个值就将表达式的值作为列表的一个元素
"""
list1 = [10 for x in 'abc']
print(list1) # [10, 10, 10]
list2 = [x*2 for x in range(5, 11)]
print(list2) # [10, 12, 14, 16, 18, 20]
# 练习1: 使用列表推导式获取nums中所有元素的个位数
# [3, 9, 0, 6, 1, 2]
nums = [23, 89, 90, 56, 41, 802]
result = [x % 10 for x in nums]
print(result)
# 练习2:是用列表推导式将nums中所有的元素乘以10
# [230, 890, 900, 560, 410, 8020]
nums = [23, 89, 90, 56, 41, 802]
result = [x * 10 for x in nums]
print(result)
# 练习3:已知分数列表,将列表中的元素全部换成'及格' - True 或者'不及格'-False
# [True, True, False, True, False, True]
scores = [90, 78, 45, 67, 39, 89]
result = [x >= 60 for x in scores]
print(result)
# ['及格', '及格', '不及格', '及格', '不及格', '及格']
result = ['及格' if x >= 60 else '不及格' for x in scores]
print(result)
# 练习4:已知一个数字列表,将列表中所有的偶数除以2,所有的奇数乘以2
# [46, 178, 45, 28, 82, 401]
nums = [23, 89, 90, 56, 41, 802]
result = [x*2 if x % 2 else x/2 for x in nums]
print(result)
# 2.推导式结构2
"""
[表达式 for 变量 in 序列 if 条件语句]
创建一个列表;
变量去序列取值,一个一个的取,取完为止,每取一个值就判断条件语句是否为True,如果为True就计算表达式的结果为列表的元素
"""
result = [x for x in range(10, 21) if x % 2]
print(result) # [11, 13, 15, 17, 19]
# 练习1:使用列表推导式提取nums中所有的奇数
# [23, 89, 41]
nums = [23, 89, 90, 56, 41, 802]
result = [x for x in nums if x % 2]
print(result)
# 练习2:已知一个列表,提取列表中所有的字符串
# ['hello', '12']
list1 = [10, 23.9, 'hello', True, '12', 0]
result = [x for x in list1 if type(x) == str]
print(result)
# 练习3:已知一个列表,提取列表中所有的整数,并且将整数加3
# [13, 3, 5]
list1 = [10, 23.9, 'hello', True, '12', 0, 2]
result = [x+3 for x in list1 if type(x) == int]
print(result)
7.补充三目运算符
# C和Java
"""
表达式?值1:值2 - 如果表达式的值为真结果就是值1,否则结果是值2
"""
# python
"""
值1 if 表达式 else 值2 - 如果表达式的值为True结果就是值1,否则结果是值2
"""
age = 8
result = '成年' if age >= 18 else '未成年'
print(result)
a = 1
b = 2
result = b * 2 if a > 0 else b / 2
print(result)
8.元组
# 元组就是不可变的列表
# 查、in和not in、数学运算、比较运算、相关函数 - 元组都支持
# 1.什么是元组(tuple)
"""
(元素1, 元素2, 元素3, ....)
不可变的;有序
"""
# 空元组
t1 = ()
print(t1, type(t1))
# 有一个元素的元组: (元素,)
t2 = (10,)
print(t2, type(t2))
t3 = (10, 23, 78, 90, 67, 89)
print(t3[1])
print(t3[-1])
print(t3[-3:]) # (90, 67, 89)
标签:10,20,推导,nums,day7,列表,result,print 来源: https://blog.csdn.net/Zzxsnbb_/article/details/121777293
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。