day 7

day 7列表和列表推导式

1、列表相关运算符
1.1数学运算符+、*
1.1.1 +
  • 列表1+列表2——功能:将两个列表中的元素合并产生一个新的列表
  • 不影响原列表
list1 = [100, 200, 300]
list2 = [10, 20]
print(list1 + list2)  # [100, 200, 300, 10, 20]
1.1.2 *
  • 列表*N
  • N*列表
  • N个列表相加——列表中的元素重复N次,产生一个新的列表
print(list2 * 3)  # [10, 20, 10, 20, 10, 20]
print(list1 * 1)  # 产生一个新的和原来一样的列表
1.2比较运算符
  • 补充:不同的类型可以使用==和!=来比较是否相等,但是不能用>、<、>=、<=来比较大小
  • 1)==、!= ——顺序影响结果
print([10, 20, 30] == [10, 20, 30])  # True
print([10, 20, 30] == [10, 30, 20])  # False
  • 2)>、<、>=、<=
  • 两个列表比较大小——比较的是第一对不相等的元素(下标相同)
print([10, 200, 300, 40] > [20, 1])  # False
print([10, 200, 300, 40] > [10, 20, 1, 100000])  # True
print([10, 20, 30] > [10, 20])  # True
2、列表相关函数
2.1max、min
  • max(序列)——获取序列中最大的元素
  • min(序列)——获取序列中最小的元素
  • 注意:序列本身可以比较大小
nums = [10, 69, 98, 23, 45, 90, 100]
print(max(nums))  # 100
print(min(nums))  # 10
2.2 sum
  • sum(数字序列)——求序列中所有元素的和
sum(range(101))  # 0+1+2......+100
2.3 sorted——排序
  • sorted(序列)——将序列中的元素按照从小打到大排序,产生一个新的列表
  • sorted(序列,reverse=True)——将序列中的元素从大到小排序,产生一个新的列表
nums = [10, 69, 98, 23, 45, 90, 100]
new_nums = sorted(nums)
print(new_nums)  # [10, 23, 45, 69, 90, 98, 100]

nums = [10, 69, 98, 23, 45, 90, 100]
new_nums = sorted(nums, reverse=True)
print(new_nums)  # [100, 98, 90, 69, 45, 23, 10]

2.4 len
  • len(序列)——获取序列中元素的个数
print(len([10, 20, 30]))  # 3
print(len('abcvn'))  # 5
print(len(range(90)))  # 90
2.5list
  • list(序列)——所有的序列都可以转化成列表
  • 功能:将序列的元素作为列表的元素创建一个新的列表
print(list('abcdfg'))  # ['a', 'b', 'c', 'd', 'f', 'g']

print(list(range(3)))  # [0, 1, 2]

3、列表相关方法
  • 列表.append(元素)
  • 列表.insert(下标,元素)
  • 列表.remove(元素)
  • 列表.pop(元素)
3.1 列表.clear()——清空列表
nums = [10, 20, 30]
nums.clear()
print(nums)   #[]
3.2列表.copy()——复制列表产生一个一模一样新的列表
  • 列表.copy()——浅拷贝
  • 列表[:]、列表*1、列表=[]——都是浅拷贝
nums = [10, 20, 30]
new_nums1 = nums.copy()
print(new_nums1)  # [10, 20, 30]
new_nums3 = nums[:]
print(new_nums3)  # [10, 20, 30]


  • 变量保存数据时候保存的其实是数据在内存中的地址。一个变量直接给另一个变量赋值,赋的是地址
new_nums2 = nums
print('nums', id(nums))  # 2464425382080
print('new_nums1', id(new_nums1))  # 2464425065920
print('new_nums2', id(new_nums2))  # 2464425382080
3.3列表.count(元素)——统计列表中指定元素的个数
nums = [10, 20, 30, 40, 10, 20, 56, 10]
print(nums.count(10))  # 3
c = nums.count(10)
print(c)  # 3
print(nums.count(100))  # 0

3.4列表.extend(序列)——将序列中的元素全部添加到列表中
  • 序列的‘ABC’,包含A,B,C三个
nums = [100, 200, 300, 5]
nums.append([10, 20])
print(nums)  # [100, 200, 300, 5, [10, 20]]

nums.extend([10, 20])
print(nums)  # [100, 200, 300, 5, [10, 20], 10, 20]

nums.extend('abc')
print(nums)  # [100, 200, 300, 5, [10, 20], 10, 20, 'a', 'b', 'c']

nums.append('abc')
print(nums)  # [100, 200, 300, 5, [10, 20], 10, 20, 'a', 'b', 'c', 'abc']

3.5列表.index(元素)——获取元素在列表中的下标值(0开始的下标值)
  • 如果元素有多个,返回第一个的下标;如果元素不存在,就会报错
nums = [100, 200, 300, 5, 10, 20, 10, 'b', 'c', 'abc']
print(nums.index(300))  # 2

result = nums.index(20)
print(result)  # 5

print(nums.index(10))  # 4——第一次出现的位置
3.6列表.reverse()——列表逆序
  • [::-1]——逆序的方法
nums = [10, 20, 30, 40]
nums.reverse()  # 不产生结果
print(nums)
3.7 排序
  • 列表.sort() / 列表.sort(reverse=True) ——不产生结果
  • sorted(列表) / sorted(列表,reverse=True) ——产生结果
nums = [119, 30, 25, 90]
result = sorted(nums)
print(result)  # [25, 30, 90, 119]

nums.sort()
print(nums)  # [25, 30, 90, 119]

4、列表推导式——快速创建列表的表达式
4.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]

  • # 练习:使用推导式获取nums中所有元素的个位数
    nums = [23, 89, 90, 56, 41, 802]
    ge_wei = [x % 10 for x in nums]
    print(ge_wei)
    
    # 练习2:是用列表推导式将nums中所有的元素乘以10
    # [230, 890, 900, 560, 410, 8020]
    nums = [23, 89, 90, 56, 41, 802]
    new_nums = [x * 10 for x in nums]
    print(new_nums)
    # 练习3:已知分数列表,将列表中的元素全部换成'及格' - True 或者'不及格'-False
    # ['及格', '及格', '不及格', '及格', '不及格', '及格']
    #  [True, True, False, True, False, True]
    scores = [90, 78, 45, 67, 39, 89]
    new_scores = [x >= 60 for x in scores]
    print(new_scores)  # [True, True, False, True, False, True]
    
    # ['及格', '及格', '不及格', '及格', '不及格', '及格']
    scores = [90, 78, 45, 67, 39, 89]
    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 == 0 else x * 2 for x in nums]
    print(result)  # [46, 178, 45, 28, 82, 401]
    
    
4.2列表推导式结构2
  • 语法:

    [表达式 for 变量 in 序列 if 条件语句]
    功能:创建一个列表
    变量去序列中取值,一个一个的取,取完为止,每取一个值就判断条件语句是否为True,如果为True就计算表达式的结果

result = [x for x in range(10, 20) if x % 2]
print(result)  # [11, 13, 15, 17, 19]

# 练习1:使用列表推导式提取nums中所有的奇数
# [23, 89, 41]
print('=========================1==============')
nums = [23, 89, 90, 56, 41, 802]
result = [x for x in nums if x % 2]
print(result)  # [23, 89, 41]

print('=========================2==============')
# 练习2:已知一个列表,提取列表中所有的字符串
list1 = [10, 23.9, 'hello', True, '12', 0]
result = [x for x in list1 if type(x) == str]
print(result)  # ['hello', '12']

print('=========================3==============')
# 练习3:已知一个列表,提取列表中所有的整数,并且将整数加3
# [13, 3]
list1 = [10, 23.9, 'hello', True, '12', 0]
result = [x + 3 for x in list1 if type(x) == int]
print(result)  # [13, 3]

5、补充三目运算符
  • 语法:

    值2 if 表达式 else 值2——如果表达式的值为True结果就是值1,否则就是值2

  • 例子

age = 18
result = '成年' if age >= 18 else '未成年'
print(result)  # 成年

a = 2
b = 3
result = a if a > b else b
print(result)  # 3
6、元组——不可变的列表
  • 查、in和not in、数学运算、比较运算、相关函数—— 元组都支持
6.1什么是元组(tuple)
  • (元素1,元素2,元素3,…)

  • 不可变得;有序

  • 空元组

t1 = ()
print(t1, type(t1))  #() <class 'tuple'>
  • 有一个元素的元组
t2 = (10) #t2=(10,)
print(t2, type(t2))   #10 <class 'int'>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值