列表的加深了解

列表的加深了解

1 列表推导式

列表推导式:轻量级循环创建列表Pythonic

创建1-20之间所有偶数的列表

1.1 直接进行列表书写

list = [2,4,6,8,10,12,14,16,18,20]
print(list)

1.2 range()

ret = range(2,21,2)
print('range:',list(ret))

list = []
for i in range(2,21):
    if i%2==0:
        list.append(i)
print(list)

其中range()遵循左闭右开原则。

1.3 列表推导式

list = [i for i in range(1,21) if i%2==0]
print(list)

1、先迭代的是:range(1,21)

2、判断 i%2==0

3、符合条件的放入列表

2 列表的相关技巧

2.1 列表的合并操作

列表的合并操作,列表中可以出现重复元素

list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
print('list1:', list1)
print('list2:', list2)
list3 = list1+list2
print('list3:',list3)
list1.extend(list2)
print(list1)

2.2 列表转字符串

列表转字符串,注意:列表里面的元素,必须是字符串类型

list1 = [1, 2, 3, 4, 5]
list4 = ['1','2','3']
str1 = ''.join(list4)
print(str1)
str2 = ''.join([str(i) for i in list1])
print(str2)

注意点:列表里面进行转字符串的过程中,列表元素必须是字符串类型,如果是其他类型的列表,需要将每一个元素转成字符串,最后用join()这个方法转成字符串,有返回值。

3 内置函数(例子)

3.1 isinstance()

内置函数isinstance() ,判断数据类型

列表可以嵌套列表

list3 = [1,2,3,[1,2,3],4,5,7,[6,7,8]]
for i in list3:
    if isinstance(i,list):
        for j in i:
            print(j)
    else:
        print(i)

3.2 zip()

zip()将相同下标的内容打包成元组

list4 = ['aa','bb','cc']
list5 = [12,13,14]
ret = zip(list4,list5)
print(ret)
for i in ret:
    print(i)

3.3 enumerate()

enumerate()可将函数返回成一个对象,可以用for循环进行遍历获取

list4 = ['aa','bb','cc']
ret = enumerate(list4)
print(ret)
for i in ret:
    print(i)

4 列表的拷贝

4.1 引用

如果是引用的拷贝操作,无论哪个列表做操作,都会影响到其他的引用列表,id是相同的,操作也是同步的

list1 = [1,2,3,['a','b','c'],'abc']
print('list1:',list1,id(list1))
print('#####################')
list2 = list1
print('list2:',list2,id(list2))
print('#####################')
list1.append('xyz')
print('修改后list1:',list1)
print('未修改的list2:',list2)
list2.append('jjj')
print('修改后list2:',list2)
print('未修改的list1:',list1)

4.2 浅拷贝

浅拷贝 注意:id()地址是不一样的,但是列表里面的子对象是同一个

list1 = [1,2,3,['a','b','c'],'abc']
print('list1:',list1,id(list1))
print('#####################')
list3 = list1.copy()
print('list3:',list3,id(list3))
list3.append('hello')
print('修改后的list3:',list3)
print('未作修改的list1:',list1)
print('#####################')
list3[3]='xxx'print('修改后的list3:',list3)
print('未作修改的list1:',list1)

4.3 深拷贝

深拷贝之后id是不相同的,深拷贝会创建一个和原来列表完全没有关系的列表,他们的列表对象和子对象都是不同的,他们的操作也是不同的,是完全独立的。

import copy
list1 = [1,2,3,['a','b','c'],'abc']
print('list1:',list1,id(list1))
print('#####################')
list2 = copy.deepcopy(list1)
print('深拷贝列表:',list2,id(list2))
list2[3].append('hello')
print('修改后的深拷贝',list2)
print('未作修改的list1',list1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值