python列表全面讲解

本文阅读需要1小时。
----列表是python最重要的,几乎所有语言都要使用列表。-
本文将列表可能存在或使用的情况,我能想到的都列出来了。
注:本文用☆表示较难,初学者做了解即可。
一、列表可以存放什么:
字符串,浮点数(小数),整型数,例如:list列表
也可存放:元组、列表、字典。例如:a列表

list=[‘spam’, ‘汉语’, 3.14,2021]
a = [(20.21, ‘age’), [,‘name’, 2021], {‘键’: ‘值’}]
注意:列表长度有限制:
32位python的限制是 536870912 个元素
64位python的限制是 1152921504606846975 个元素

二、对列表有哪些操作:
L=[123,‘ABC’,3.14,{}]
列表索引:123是0,ABC是1, 3.14索引是2。
列表的索引从0开始的。
列表最后一个索引是-1,倒数第二索引-2

操作解释
L=[ ]一个空列表
L=[123,‘ABC’,3.14,{}]索引,列表第一个数据索引是0
L=[‘mane’,21,[‘dev’,‘age’]]列表嵌套,列表内有[‘dev’,‘age’]
L=list(‘aBc9’)可迭代:print(L)[‘a’, ‘B’, ‘c’, ‘9’]
L[i]索引:i是列表的索引,如:1
L[i][j]索引的索引(见下面代码)
L[i:j]切片(取用列表一部分数据)
len(L)显示列表长度
L1+L2列表拼接
L*2重复列表

常用操作

操作解释
L.append(2)在列表尾部添加2,或者其他
L=[123,‘ABC’,3.14,{}]索引,列表第一个数据索引是0
L.extend([5,6,7])尾部扩展
L.insert(i,x)插入
L.count(x)统计元素出现次数
L[i]=3索引赋值
L.remove(y)删除元素y
L.copy()复制列表 python3.3以上可用
L.clear清除列表 3.3以上可用
列表解包for i in L:print(L)

以上解释:L是列表可以自己设定。L=[1,2,3,‘a’,‘张’],i是列表索引。
1、索引示范如下:

L = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(L[1][2])
print(L[1][1:2])
运行结果:
6
[56]

[1, 2, 3]索引是0,[4, 5, 6]索引是1
第1个print含义:选择[4, 5, 6]中的最后一个数字的索引 2
第2个print含义:选择[4, 5, 6]中的索引1-2数据。[1:2]就是切片,选取了列表[4, 5, 6]的一部分打印。

2、下面介绍分片步长:↓

box=[0,1,2,3,4,5,6,7,8,9]
s=box[1:8:2]
print(s)
结果:
[1, 3, 5, 7]

[1:8:2]索引从1-8,以2的步长提取数据(1-3,走了2步),2就是步长。

3、列表排序(整理列表)
列表整理很重要,我们实践中遇到的数据99%是乱序的,比如身高,分数,年龄,工资等等。整理列表是所有编程语言都会用到的。
(1)列表反转↓

M=['A','B','C','D']
X='0123456789'
print(M[::-1])
print(X[5:1:-1])
结果:
['D', 'C', 'B', 'A']
5432

反转例2

例:1
h=['aa','bb','cc']
h.sort(reverse=False)
print(h)
h.sort(reverse=True)
print(h)
结果:
['aa', 'bb', 'cc']
['cc', 'bb', 'aa']2:如下
k=['aa','bb','cc']
k.reverse()
print(k)

k.sort()
print(k)
结果
['cc', 'bb', 'aa']
['aa', 'bb', 'cc']

对上面的解释:列表反转方法很多,sort,reverse单独使用,也可以组合使用。
(3)根据长度排序↓
按照元素长度排序。

king = ['abc', 'HHHH', 'ffffffff', '康熙']
king.sort(key=len)
print(king)
结果:
['康熙', 'abc', 'HHHH', 'ffffffff']

4、列表弹出 ↓(用途较多)

M=['A','B','5','D']
x=M.pop(2)
print(M)
print(x)
结果:
['A', 'B', 'D']
5

运行讲解:pop是将M列表的第2索引拿出去,并不是删除(是取出,可再使用)
第二个print,打印被取出的5。实际应用中可以将这个x(即5)可以放入其他列表中:例如用append添加到列表尾部。

三、列表其他用法:
列表推导☆☆☆

(以下文字需要有for循环、for嵌套基础。初学做了解即可)

1、常规列表推导。看代码做比较。

res=[x+y for x in [1,2,3] for y in [0,5,6]]
print(res)
结果:
[1, 6, 7, 2, 7, 8, 3, 8, 9]
res=[]
for x in [1,2,3]:
    for y in [0, 5, 6]:
        res.append(x+y)
print(res)
结果:
[1, 6, 7, 2, 7, 8, 3, 8, 9]
tgr=[x+y for x in 'ABC' for y in '123']
print(tgr)
结果:
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

看代码,做比较

res=list(map(str, "fsdf"))
print(res)
结果:
['f', 's', 'd', 'f']
res = []
for i in 'fsdf':
    res.append(i)
print(res)
结果:
['f', 's', 'd', 'f']

以上2段代码结果,第一段代码运用的是列表推导。第二段是for循环。
str是后面参数的类型解释,如果后面是1234,可以是int。
——————————————————————________________________________________

L=[x+2 for x in range(5)]
print(L)
运行结果:
[2, 3, 4, 5, 6]

上面代码先运行for循环,每循环一次X的值都+2。0+2,1+2,2+2,3+2,4+2。


2、列表矩阵
打印矩阵

m=[['s',2,3,4],
   [4,'p',6,7],
   [7,8,'t',8],
   [4,5,6,'h']]
x=[m[i][i] for i in range(len(m))]
print(x)
结果:
['s', 'p', 't', 'h']

3、map在列表推导的运用
1、map用法1↓

m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b=list(map(sum,m))
print(b)
结果:
[6, 15, 24]

map在list内会强制它返回所有的值,sum是求和。类似range

2、map用法2↓

L2 = list(map((lambda x: x ** 2), range(5)))
print(L2)
运行结果:
[0, 1, 4, 9, 16]

3、map解包:

people=[('梅梅',35,'教师'),('老王',42,'电工')]

x=list(map((lambda age:age[1]),people))
k=[(name,job) for (name ,age, job) in people]
print(x)
print(k)
结果:
[35, 42]
[('梅梅', '教师'), ('老王', '电工')]

第一个print,把年龄从元组取出变成列表。
第二个print,看起并不算是解包。
注意:不要滥用列表推导,简单胜于复杂。刚刚开始学习,要尽量使用for循环编写代码。如果考虑速度,在某些特定环境下,列表推导运行速度快于for。代码还有为了让人们看懂的含义,当人们懂得你的代码,我们再根据需要修改成可以运行更快的方式。并不是所有列表推导都运行快。KISS原则(Keep it simple and stupid)——保持简单甚至愚蠢原则。

逐步补充,争取把这个写把所有列表形式都展现出来,这是愿望,但还未实现。先写到这,后期再补充。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值