Python列表(List)

本文详细介绍了Python列表的基础知识,包括索引、切片、增加、删除、查找和修改等操作。此外,还讨论了列表的常用方法,如len()、extend()、index()、insert()、pop()、remove()、reverse()、sort()以及clear()。同时,解释了列表复制时的深拷贝和浅拷贝的区别,并展示了如何使用copy和deepcopy函数。内容涵盖了列表的遍历、排序、拼接、重复、判断等实际编程场景。

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

Python  列表(List)基础内容

序列是 Python 中最基本的数据结构。

序列中的每个值都有对应的位置值,称之为索。从头开始第一个索引是 0,第二个索引是 1,依此类推。从尾开始第一个为-1,往前为-2,以此类推。

正索引:   0   1   2   3
List = [ '1','2','3','4' ]
逆索引:  -4  -3  -2  -1

根据索引切片,截取字符(注:与字符串截取相似

list=['12','as','we',12,14,'po']
print(list[1:4:3]) #[开始:结束:跳]
》》

['as',12]

列表的增加(append)、删除(del)、查找、修改

list=['12','as','we',12,14,'po']
list.append("my") #增加
print(list)
del list[1] #'删除'
print(list)
print(list[2]) #查找
list[2]='test' #修改
print(list)

》》

['12', 'as', 'we', 12, 14, 'po', 'my']
['12', 'we', 12, 14, 'po', 'my']
12
['12', 'we', 'test', 14, 'po', 'my']

列表操作 :长度 len()、拼接 (+) 、重复( *)、判断、迭代、逆序、嵌套

list=['12','as','we',12,14,'po']
list2=['56','78']
print(len(list)) #列表长度 len(list)
print(list+list2) #列表拼接 +
print(list2*2) #重复 *X
if 'as' in list:     #判断是否存在列表
    print("存在")
else:
    print("不存在")

for i in list:  #迭代每个元素
    print(i)
print(list[-1::-1]) #逆向输出
m=[list,list2] #嵌套
print(m)

》》


6
['12', 'as', 'we', 12, 14, 'po', '56', '78']
['56', '78', '56', '78']
存在
12
as
we
12
14
po
['po', 14, 12, 'we', 'as', '12']
[['12', 'as', 'we', 12, 14, 'po'], ['56', '78']]

函数:

1、max(list) / min(list) 返回最大/最小元素(所有元素为同一类型)

2、list.count(obj) 统计元素在集合中出现的次数 (元素类型必须相同)

3、list.extend(list/tuple/set/str) 将添加到结尾,与 + 拼接的区别在于可以是"不同"类型的元素

4、list.index(obj)  返回第一个匹配项的索引位置

5、list.insert(index,obj) 指定位置插入元素。

6、list.pop(index)  删除指定位置的元素

7、list.remove(obj)  从头开始查找,删除第一个匹配项的指定元素

8、list.reverse() 逆向排序   与list[-1::-1] 功能相同,区别在于前者无返回值,后者有;前者会改变集合,后者不会改变集合。

9、list.sort() 从小到大排序 与 sorted() 的功能相同,sorted为python内置函数;前者无返回值,后者有;前者会改变集合,后者不会改变集合。

10、list.clear() 清空

ls=['12','as','we',12,14,'po']
list2=['56','78','11']
list3=['a','d','cf','kt']
tm=('q','w','e',12) #元组
print(max(list3)) #返回最大元素(注意:要求列表中元素为同一类型,否则报错)
print(min(list3))#返回最小元素(注意:要求列表中元素为同一类型,否则报错)
print(list(tm)) #元组转化为列表(注:如果定义其他元素为list名,此处转化会报错)
print(" +++++ 1 +++++    ")
#list.count(xx) 统计出现次数。 不会因为内容相同 类型不同 而重复统计
print(ls.count("12"))

# list.extend(list/..)  将添加到结尾,可自动将tuple和set转化为list列表并添加
#与 + 、+= 的区别为 可使用到其他类型元素上
ls.extend(list2)
print(ls)
print(" +++++ 2 +++++    ")
# list.index(obj) 返回第一个匹配项索引位置
print(ls.index("we"))

#list.insert(indes,obj) (位置,元素) 可定位置插入元素
ls.insert(3,tm)
print(ls)
print(" ++++ 3 ++++++    ")
#list.pop(index) (默认为最后一个)  删除内部元素
ls.pop(3)
print(ls)

#list.remove(obj)  删除 第一个匹配项
ls.remove("as")
print(ls)
print(" +++++ 4 +++++    ")
#list.reverse() 逆向 与 ls[-1::-1] 都为逆向返回 区别为 前者为在元素上直接返回,后者为有返回值
ls.reverse()
print(ls)
print(ls[-1::-1]) #直接有返回值
print(" ++++ 5 ++++++    ")


#list.sort()  排序 无返回值,只能是所有元素都是同一类型的集合 (注:会改变原集合)
# sorted() 排序 python内置函数 有返回值,只能是所有元素都是同一类型的集合 (注:不会改变原集合)
list3.sort()
print(list3)
print(sorted(list2))
print(list2)

print(" ++++ 6 ++++++    ")

#list.clear() 清空列表
ls.clear()
print(ls)

》》

kt
a
['q', 'w', 'e', 12]
 +++++ 1 +++++    
1
['12', 'as', 'we', 12, 14, 'po', '56', '78', '11']
 +++++ 2 +++++    
2
['12', 'as', 'we', ('q', 'w', 'e', 12), 12, 14, 'po', '56', '78', '11']
 ++++ 3 ++++++    
['12', 'as', 'we', 12, 14, 'po', '56', '78', '11']
['12', 'we', 12, 14, 'po', '56', '78', '11']
 +++++ 4 +++++    
['11', '78', '56', 'po', 14, 12, 'we', '12']
['12', 'we', 12, 14, 'po', '56', '78', '11']
 ++++ 5 ++++++    
['a', 'cf', 'd', 'kt']
['11', '56', '78']
['56', '78', '11']
 ++++ 6 ++++++    
[]

11、复制

#list.copy() 使用复制后,外层为深拷贝,内层为浅拷贝(共用同一地址,值改变都会改变)
ls1=[1,[1,2,3],4]
ls2=ls1.copy()
print(ls2)
ls2[0]=5
print(ls2,' 改外层  ',ls1,' 第一层内存地址',id(ls1[0]),'第二层内存地址',id(ls1[1]))
ls2[1][0]=6
print(ls2,' 改内层  ',ls1,' 第一层内存地址',id(ls2[0]),'第二层内存地址',id(ls2[1]))

print('++++++++++++++++ ')
# copy.deepcopy(list) 拷贝后的集合与原集合无关
import copy
ls3=copy.deepcopy(ls1)
print(ls3)
ls3[0]=7
print(ls3,' 改外层  ',ls1,' 第一层内存地址',id(ls1[0]),'第二层内存地址',id(ls1[1]))
ls3[1][0]=8
print(ls3,' 改内层  ',ls1,' 第一层内存地址',id(ls3[0]),'第二层内存地址',id(ls3[1]))

》》

[1, [1, 2, 3], 4]
[5, [1, 2, 3], 4]  改外层   [1, [1, 2, 3], 4]  第一层内存地址 1548888467760 第二层内存地址 1548890536512
[5, [6, 2, 3], 4]  改内层   [1, [6, 2, 3], 4]  第一层内存地址 1548888467888 第二层内存地址 1548890536512
++++++++++++++++ 
[1, [6, 2, 3], 4]
[7, [6, 2, 3], 4]  改外层   [1, [6, 2, 3], 4]  第一层内存地址 1548888467760 第二层内存地址 1548890536512
[7, [8, 2, 3], 4]  改内层   [1, [6, 2, 3], 4]  第一层内存地址 1548888467952 第二层内存地址 1548890537280

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值