day07列表 第二弹

一、列表生成式 推导式 -->创建列表的一种字面量语法

#comprehension
a = [x for x in range(1,101)]
b = [x for x in range(2,101,2)]
c = [x for x in range(1,101) if x %3 ==0 or x % 5 == 0]
d = [x<<1 for x in range(1,11)]
print(c)
print(d)
应用
1. 序列变换成列表
str1 = 'abc'
list1 = [x for x in str1]
print(list1)
2 .筛选(提取出有效的或者删除无效)
scores = [89, 8, 100, 98, 67, 34, 59, 45, 23, 78, 92]
new_scores = [x for x in scores if x >= 60]
print(new_scores)
3 .不统一的变换

if后面的条件成立就执行if前面的语句,否则就执行else里面的语句

list4 = [19, 'abc', '98', 'mnb', 13, 53]
new_list4 = [x * 10 if type(x) == int else x for x in list4]
#如果返回类型是整型,就对遍历的元素进行x*10 操作,不成立,遍历直接过
#不统一的变换与筛选的区别就是,不统一的变换是不会删除掉原列表里的元素的
print(new_list4)

二、列表的加法和乘法

1. 列表1 + 列表2 – 合并两个列表产生一个新的列表
a = [1, 2, 3]
b = ['后裔', '鲁班七号']
print(a + b)  # [1, 2, 3, '后裔', '鲁班七号']
2. 列表 * N – 列表中的元素重复N次产生一个新的列表
print(a * 5)  # [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
3. 比较运算
  1. 比较相等:== !=
    a.两列表相等,元素个数,大小,顺序都相等
    b.两个不同类型的数据可以判断是否相等, 结果一定是False
    c. is的用法
    print([1, 2] == 'abc')  # False
    print([1, 2] == '[1,2]')  # False
    print('is:',2 is 2, 2==2) # True
    print('is:', 'you' is 'you')  # True
    print('is:', [1, 2] is [1, 2], [1, 2] == [1, 2])  # False True
    
  • 为什么2 is 2为true 列表 is列表是false

    2 is 2 里的两个2 指的是同一个存储空间里的2,不可变数据都是如此;列表可变,即使列表长得一样但是存储位置是不同的

    is 是判断是否是’本人’
    == 是判断这两个人长得是不是一模一样

#如果是
list1=[1, 2]
list2=[1, 2]
list1=list2
print(list1 is list2) # True
  • 用数据给变量赋值的时候,如果数据是不可变的,那么会复用前面存储的值

  • 如果数据可变,不管之前有没有存储过,都会重新开辟新的内容空间

  • id(变量) -获取变量中保存的数据在内容空间中的地址

  • 数字、元组不可变 列表可变

  • 用一个变量给另外一个变量赋值,其实是让新的变量保存原变量中的数据的地址(不会开辟新的空间保存数据)

    a = [10, 20]
    b = a
    print(id(a), id(b)) # 2061876680448 2061876680448 
              #(不同计算机返回地址肯定是不同的,这里别抄俺的答案)
    
  • python里的所有变量都是指针变量,变量存的是数据在内存中存储的地址

三、列表相关函数

1.相关函数

max、min、sum、sorted、len、list

1)max 和 min

max(序列)–返回序列中元素的最大值
min(序列) – 返回序列中元素的最小值

nums = [90, 89, 67, 29, 789, 2]
print(max(nums))
print(min(nums))
2) sum 序列 - 求序列中所有元素的和

只能是数字数据

nums = [90, 89, 67, 29, 789, 2]
print(sum(nums))
print(sum(range(101)))
3) sorted
  • sorted(序列) --将序列中的元素从小到大排序(升序),以列表的形式返回排好序的新列表,可应用于任何可迭代的对象上
    sorted(序列,reverse=True) --降序

  • 列表.sort
    在原始list上操作,不返回值

nums = [90, 89, 67, 29, 789, 2]
print(sorted(nums))# [2, 29, 67, 89, 90, 789]
print(nums.sort()) # None


4)list(序列)-- 将其他的数据序列转换成列表(任何序列都可以)
list1 = list('abc')      # ['a', 'b', 'c']
print(list1)
list2= list(range(10,15)) # [10, 11, 12, 13, 14]
print(list2)

四、相关方法

列表.xxx()
1. 列表.clear() -删除
nums=[1,34,32,13,45]
nums.clear()
nums=[1,34,32,13,45]
nums=[] #也可清空,效率不如clear
2. 列表.copy – 返回一个和原列表一样(长得一样的)新的列表

列表[:] 、列表+[]、列表*1 也可复制

nums2 = nums
# nums1 和 nums 地址是不同的,nums2和nums地址是一样的
song = ['身骑白马','关山酒','喜','喜']
song1=song+[]
print(song1)
3. 列表.count(元素) - 返回元素在列表中出现的次数
song = ['身骑白马','关山酒','喜','喜']
print(song.count('喜'))
4. 列表.extend(序列) - 将序列中的元素全部添加到列表中
song = ['身骑白马','关山酒','喜','喜']
song.extend(['典狱司','加州旅馆'])
print(song)
5. 列表.index(元素) - 返回元素在列表中的下标(这的下标是0开始的下标值)
song = ['身骑白马','关山酒','喜','喜']
print(song.index('喜')) #2 有重复的返回第一个元素的下标 # 没有的就报错
6. 列表.reverse() - 逆序
song = ['身骑白马','关山酒','喜','喜']
new_song = song[::-1]
print(new_song)
song.reverse()
print(song)
7. 列表.sort()
nums = [90, 89, 67, 29, 789, 2]
nums.sort()
print(nums)
nums = [90, 89, 67, 29, 789, 2]
new_nums = sorted(nums)
print(new_nums)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值