Python基础-列表

本文介绍了Python列表的基础,包括定义、特点、创建、拼接、重复、偏移和切片、增加元素、删除元素、查询元素的方法,以及常用函数、赋值与深浅拷贝的概念,特别强调了列表解析式的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python基础-列表

1.定义及特点

  • 列表是Python中最基本的数据结构,用[]括起来。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

  • 特点:有序 ,可重复,类型可变

2.列表的基础操作

2.1创建列表

  • 创建空列表
li=[]
  • 创建多元列表
li=[123,1,'a','b',['i','www']]
  • 强制转化
sr='abcd'
lr=list(sr)
print(lr)

2.2拼接

li1=['hel']
li2=['lo']
li=[li1+li2]
print(li)

'[['hel', 'lo']]'

2.3重复

li=[1,'a']
print(li*2)

'[1,'a',1,'a']'

2.4偏移和切片

li=['a','2','c','d'[12,'b',2],'ws']print(len(li))
print((li[0],li[-6]))
print(li[:4])
print(li[::-1])
print(li[4][2])#先调出元素123 然后取出其中第三个
'''
输出为6
('a', 'a')
['a', '2', 'c', 'd']
['ws', ['123', 'b', 2], 'd', 'c', '2', 'a']
2'''

2.5增加元素

函数名描述
list.append(obj)在列表末尾添加新的对象
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.insert(index,obj)将对象插入列表
  • append()
li=['cheer','down']
print(id(li))
li1=['a','b',3]
li.append(li1)
print((li,id(li))) #发现li所指向的地址没变
'''输出为
41031432
(['cheer', 'down', ['a', 'b', 3]], 41031432)'''

  • extend()
li=['cheer','down']
li1=['a','b',3]
li.extend(li1)#将li拆分之后,一个一个元素按序放入li
print(li)
'''
输出为:
['cheer', 'down', 'a', 'b', 3]
'''
  • insert()
li=['cheer','down']
li1=['a','b',3]
li.insert(1,li1)#将li1整体放入li的第一位,其他元素后移一位
print(li)
'''输出为:
['cheer', ['a', 'b', 3], 'down']'''

2.6删除元素

函数名描述
list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)移除列表中某个值的第一个匹配项
del list[n]移除列表中序列值为n的元素
list.clear移除列表所有元素

Demo:

li=['r','o','b','o','t']
print(li.pop(1))#li.pop返回被丢弃的元素
print(li)
print(li.remove('o'))#无返回值,移出第一次遇到的指定元素
print(li)
del li[1]
print(li)
li.clear()#全部删除
print(li)
'''输出为:
o
['r', 'b', 'o', 't']
None
['r', 'b', 't']
['r', 't']
[]'''

2.7查询元素:索引,切片

  • 元素遍历
li=['a','b','c','e']
for i in li:
    print(i)
  • 索引遍历
for i in range(len(li)):
   print(li[i])
  • 枚举遍历:

    enumerate(),对于一个可迭代/可遍历的对象(列表,字符串)将其组成一个索引序列,利用它,我们可以同时获得索引和值

for i in enumerate(li,0):
    print(i)
    '''
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'e')'''

2.8几个常用函数

  • 计数 count()
  • 反转reverse()
  • 排序 sort()

2.9赋值与深浅拷贝

  • 赋值定义:赋值是对对象的引用,指向对象所在地址
la=[1,2,3,4,5,6,7,'s',['x','y']]
lb=la
print(id(la),id(lb))

'31200712 31200712'
  • 拷贝:原则上就是把数据分离出来,复制其数据,并以后修改互不影响。

    • 浅拷贝:数据半共享(复制其数据独立内存存放,但是只拷贝成功第一层

      • 三种实现:

        -切片操作[:]

        工厂函数list(li)

        copy模块内的copy函数

la=[1,2,3,4,5,6,7,'s',['x','y']]
lb=la
  lb2=la[:]
  print(id(la),id(lb2))
  import copy
  lb_copy=copy.copy(la)
  print(id(la),id(lb_copy))
  
  la.append('test') #添加一个原子类型,不会影响lb_copy和lb2
  la[8][0]='xxxx#'
  print(la)
  print(lb_copy)
  print(id(['xxxx','y']))
  print(id(la[8][0]),id(lb_copy[8][0]))
 
    '''
  42966344 42966408
  42966344 43403080
  [1, 2, 3, 4, 5, 6, 7, 's', ['xxxx#', 'y'], 'test']
  [1, 2, 3, 4, 5, 6, 7, 's', ['xxxx#', 'y']]
43403272
42960072 42960072 #可以看到la和lb_copy中的列表地址是相同的
  '''
  • 深拷贝:数据完全不共享(复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享)
import copy
la=[1,2,3,4,5,6,7,'s',['x','y']]
lb_deepcopy=copy.deepcopy(la)
la[5]='ssss'
la[8][0]='sssssssss'
print(la,id(la),id(la[8][0]))
print(lb_deepcopy,id(lb_deepcopy),id(lb_deepcopy[8][0]))
'''
[1, 2, 3, 4, 5, 'ssss', 7, 's', ['sssssssss', 'y']] 43337672 34805360
[1, 2, 3, 4, 5, 6, 7, 's', ['x', 'y']] 43338952 33844560'''

#可以看到 la和lb_deepcopy中的列表地址也是完全不同的

2.10列表解析式

  • 列表解析式:它可以根据已有列表,高效创建新列表的方式。列表解析是Python迭代机制的一种应用,它常用于实现创建新的列表,返回的是一个列表,因此用在[]中

  • 实现原理:迭代[可迭代对象]中的每一个元素每迭代一次的结果赋值给对应的迭代元素,通过表达式运算,得到一个新的值最后将得到的所有值以一个列表的形式返回

#格式 [表达式 for 迭代元素 in 可迭代对象]
#下面两个函数意思等同:   
    li=[]
for  x in range(10):
    li.append(x)
print(li)

print([x for x in range(10) if x%2==0])


#带过滤功能格式:下面两个的意思也完全一样
[exp for iter_val in iter if if_contion]

li=[]
for lter_val in iter:
    if if_contion:
        li.append(lter_val)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值