day7 列表的相关函数方法推导式 知识点总结

第七天 知识点总结

列表的相关函数、运算符、方法以及快速创建列表的表达式 ,三目运算符和元祖

一、列表的相关函数

1、max和min
# max(序列) - 获取序列中最大的元素
# min(序列) - 获取序列中最小的元素
nums = [10, 20, 30, 40, 50, 60, 20]
print(max(nums))
print(min(nums))
# 要求:序列中的元素能够比较大小
2、sum 求和,(用于序列中所有的元素都是数字)
#  sum(数字序列)
nums = [10, 20, 30, 40, 50, 60, 20]
print(sum(nums))
print(sum(range(101)))
3、sorted(排序)
# sorted(序列)   - 将序列中的元素从小到大排序,产生新的列表  升序
# sorted(序列,reverse=True)   - 将序列中的元素从大到小排序,产生新的列表  降序
nums = [10, 20, 30, 40, 50, 60, 20]
new_nums = sorted(nums)
print(new_nums)
nums = [10, 20, 30, 40, 50, 60, 20]
new_nums = sorted(nums, reverse=True)
print(new_nums)

reverse=True 降序 reverse=False 升序

4、len(序列) - 获取序列中元素的个数
print(len([10,20,30]))
print(len(range(5,100)))
5、list 将所有的序列转换成列表
# list(序列) - 将序列作为列表的元素创建一个新的列表
print(list("abc"))
print(list(range(3)))

二、列表的相关运算符

1、数学运算符
# 列表支持加法和乘法。 加法运算只能两个列表相加
# 列表1+列表2 - 将两个列表中的元素合并产生一个新的列表
list1=[100,200,300]
list2=[20,30]
print(list1+list2)  #[100,200,300,20,30]
# 乘法 列表*N/N*列表 - 列表中的元素重复N次,产生新的列表
print(list2*3)  # [20, 30, 20, 30, 20, 30]
print(list2*1)  # 产生一个新的列表和原来的列表一样
2、比较运算符
# 不同的类型可以使用==和!=来比较是否相等,但是不能使用> < >=  <=来比较大小
# (1)== 和 !=
# 列表有序,顺序影响结果
print([10,20,30]==[10,20,30])
print([10,20,30]==[10,30,20]) # false(列表有序)
print({10,20,30}=={10,30,20}) # True  (集合无序)
# (2)两个列表比较大小,比较的是第一对儿不相等的元素的大小,大元素所在的的那个列表大。
print([10,100,200,300]>[20,1])
print([10,100,200,300]>[10,20,1000])

三、列表相关方法

# 列表.append(元素)
# 列表.insert(下标,元素)
# 列表.remove(元素)
# 列表.pop()
1、列表.clear() - 清空列表
nums = [10, 20, 30, 40]
nums.clear()
print(nums)  # []
2、列表.copy() - 复制原来的列表,产生一个一模一样的新列表
# 列表.copy() - 浅拷贝
# 列表[:] 、 列表*1 、 列表+[] 都是浅拷贝
nums = [10, 20, 30, 40]
new_nums1 = nums.copy()
print(new_nums1)  # [10,20,30,40]
# 变量在保存数据的时候保存的其实是数据在内存中的地址(Python中的变量全是指针变量),一个变量直接给另外一个变量赋值
# 赋的是地址
new_nums2 = nums
print(new_nums2)
print("nums的地址", id(nums))
print("new_nums1的地址", id(new_nums1))
print("new_nums2的地址", id(new_nums2))

变量怎么和内存进行关联:计算机的每个内存都有一个地址,python中变量保存数据是让这个变量去把这个地址存起来。即c和java中的指针。 python中所有的变量都是以指针的形式。当我们直接复制的时候(list2=list1),复制的是变量的地址。 他们在内存中占用的是同一地址。这样做的问题是当我们操作其中一个变量时,另外一个也会跟着受影响。
copy的话是把新的地址保存到变量里。新的变量占用新的地址,并不跟原来的那个变量占用相同的地址,改变其中一个变量,另外一个变量不会收到影响。

3、列表.count(元素) - 统计列表中指定元素的个数
nums = [10, 20, 34, 89, 10, 34, 80, 10, 10, 8, 8, 8, ]
print(nums.count(10))
c1 = nums.count(8)
print(c1)
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, 10, 8, 8, 8, ]
result = nums.index(20)
print(result)
results = nums.index(10)  # 列表中元素有多个时,返回第一个下标。 如若元素不在列表里,报错。
print(results)

列表中元素有多个时,返回第一个的下标。元素不在列表里,报错。

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、排序
(1)列表.sort() / 列表.sort()reverse = True

​ 直接把列表中的元素进行排序,不产生列表,后面只能跟列表

nums = [10, 28, 90, 67, 20]
result= nums.sort()
print(nums)  # [10,20,28,67,90]
print(result)  # none
(2)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]

对列表中的元素进行排序,并且产生新的序列,sorted后面不仅可以跟列表,还可以跟其他序列

四、 列表推导式 - 快速创建列表的表达式

1、推导式结构1 - [表达式 for 变量 in 序列]
'''
[表达式 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,]
# 练习:使用列表推导式获取nums中所有元素的个位数
nums = [23, 89, 90, 56, 41, 802]
nums1 = [x % 10 for x in nums]
print(nums1)
# 练习:使用列表推导式将nums中所有的元素乘以10
nums = [23, 89, 90, 56, 41, 802]
nums2 = [x * 10 for x in nums]
print(nums2)
# 已知分数列表,将列表中的元素全部换成“及格”-True或者“不及格”-False
scores = [90, 78, 45, 67, 39, 89]
scores1 = [x >= 60 for x in scores]
scores2 = ['及格' if x >= 60 else "不及格" for x in scores]
print(scores2)
# 练习4:已知一个数字列表,将其中所有的偶数除以2,所有的奇数乘以2
nums = [23, 89, 90, 56, 41, 802]
result = [x * 2 if x % 2 == 0 else x / 2 for x in nums]
print(result)
2、推导式结构2 - [表达式 for 变量 in 序列 if 条件语句]
'''
[表达式 for 变量 in 序列 if 条件语句]
创建一个新的列表,变量去序列取值,一个一个取,取完为止。
 每取一个值,就判断条件语句是否为TRUE。如果为True就将表达式的值作为列表的一个元素。
'''
result = [x for x in range(10, 21) if x % 2]
print(result)
# 练习:使用列表推导式提取nums中所有的奇数
nums = [23, 89, 90, 56, 41, 802]
nums1 = [x for x in nums if x % 2 == 1]
print(nums1)
# 练习2 已知一个列表,提取列表中所有的字符串
list1 = [10, 23.9, 'hello', True, '12', 0]
new_list1 = [x for x in list1 if type(x) == str]
print(new_list1)
# 练习3:已知一个列表,提取列表中所有的整数,并且将整数加3
# [13, 3]
list2 = [10, 23.9, 'hello', True, '12', 0]
new_list2 = [x + 3 for x in list2 if type(x) == int]
print(new_list2)

五、三目运算符

c和java: 表达式?值1:值2 - 表达式值为真,结果是值1.否则结果就是值2

python: 值1 if 表达式 else 值2 - 如果表达式的值为True,结果就是值1.否则就是值2

# C和java
'''
表达式?值1:值2  - 如果表达式的值为真,结果就是值1.否则结果就是值2
'''
# python
'''
值1 if 表达式 else 值2 - 如果表达式的值为True,结果就是值1.否则就是值2
'''
age = 28
result = '成年' if age >= 18 else "未成年"
print(result)

六、元祖

# 元祖,就是不可变列表。 凡是列表中和可变相关的操作,元祖都不支持, 和可变无关的操作,元祖都支持。
# 查、in、和not in、数学运算、比较运算、相关函数。相关方法 - 元祖 都支持
# 1、什么是元祖(tuple)
'''
(元素1、元素2、元素3,.....)
不可变,有序
'''
# 空元祖
t1 = ()
print(t1, type(t1))
# 有一个元素的元祖
t2 = (10,)  # (后面必须有逗号,)
print(t2, type(t2))
# 其余的操作和列表一样
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值