python基础 日常总结——列表(二)

上期回顾:列表(一)


列表高级操作

遍历列表

正向:for 变量名 in 列表名: 
                   变量名就是元素 

反向:for 索引名 in range(len(列表名)-1,-1,-1):
                   列表名[索引名] 就是元素

    一般是获取反向的下标进行逆向。

【一般不通过切片完成,效率偏低,切片要重新创建一个列表】

list1=["苹果", "香蕉", "西瓜", "草莓", "哈密瓜", "蓝莓"]
for i in range(len(list1)-1):
    print(list1[i])

# 苹果
# 香蕉
# 西瓜
# 草莓
# 哈密瓜
# 蓝莓

for i in list1:
    print(i)

# 苹果
# 香蕉
# 西瓜
# 草莓
# 哈密瓜
# 蓝莓

for j in range(len(list1)-1,-1,-1):
    print(list1[j])

# 蓝莓
# 哈密瓜
# 草莓
# 西瓜
# 香蕉
# 苹果

列表生成式

使用简易方法,将可迭代对象转换为列表。

变量 = [表达式 for 变量 in 可迭代对象]
变量 = [表达式 for 变量 in 可迭代对象 if 条件]

【如果if真值表达式的布尔值为False,则可迭代对象生成的数据将被丢弃。】


li=[i for i in range(10)]
print(li)
li1=[i for i in range(10) if i%2==0]
print(li1)
li2=[f"_犬少-{i}号" for i in range(10) if i%2==0]
print(li2)

# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# [0, 2, 4, 6, 8]
# ['_犬少-0号', '_犬少-2号', '_犬少-4号', '_犬少-6号', '_犬少-8号']

列表推导式嵌套

变量 = [表达式 for 变量1 in 可迭代对象1 for 变量2 in 可迭代对象2]

list1=["犬","少"]
list2=["加","油"]
result = [r + c for r in list1 for c in list2]
print(result)

# ['犬加', '犬油', '少加', '少油']

深浅拷贝⭐

浅拷贝:复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程。

  • 列表.copy()                    【切片也是浅拷贝】

深拷贝:复制整个依赖的变量。

       import copy 

  • 列表 = copy.deepcopy(列表1)
import copy
li1=[1,2,2,3,["犬少"]]
li2=li1.copy()
li2[4].append("加油")
print(li1)
print(li2)
li3=copy.deepcopy(li1)
li3[4].append("冲鸭")
print(li1)
print(li3)

# [1, 2, 2, 3, ['犬少', '加油']]
# [1, 2, 2, 3, ['犬少', '加油']]    # 浅拷贝 内层地址相同
# [1, 2, 2, 3, ['犬少', '加油']]
# [1, 2, 2, 3, ['犬少', '加油', '冲鸭']]    # 深拷贝 内层地址不同

扩展:

is 和 == 的区别

  • 如果 is 判断相同,== 一定相同
  • 如果 == 判断相同,is 不一定相同
  • == 比较的是值,is 比较的是内存地址

【小数据池:为了提高效率,在分配内存空间地址的时候,采用相同的内存地址】
【int:-5~256,输入的小于-5时,为false ;输入的大于256时,为true  (pycharm的缺陷)】
【字符串:""*20,大于20时,为false】


列表结束,不是很难,但很常用,小白还是要多多练习。

【发现有误及时联系】【喜欢记得点赞收藏❤】【欢迎评论补充】

_犬少加油!日更冲鸭!

上期:列表(一)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值