python 列表

列表

具体实例

fuu = [1,"two","老虎","铃兰","four"]

print(fuu)
#输出:[1,"two","老虎","铃兰","four"]

print(fuu[1])
#输出:two

print(fuu[-1])
#输出:four

print(fuu[0:3])
#输出:[1, 'two', '老虎']

print(fuu[0:3])
#输出:[1, 'two', '老虎']

print(fuu[:3])
#输出:[1, 'two', '老虎']

print(fuu[3:])
#['铃兰', 'four']

print(fuu[:])
#输出:[1, 'two', '老虎', '铃兰', 'four']

for each in fuu:
	print(each)
输出:
1
2
3
four
老虎
铃兰

列表跨度表达

原型:fuu(x,y,z)
(fuu是我自己定义的)
x:起始位置
y:终点位置
z:跨服

原型:fuu(x,y,z)
x:起始位置
y:终点位置
z:跨服
print(fuu[::2])
#[1, '老虎', 'four']			2表示跨度
print(fuu[0:5:2])
#[1, '老虎', 'four']		2表示跨度
print(fuu[0:5:1])
#[1, 'two', '老虎', '铃兰', 'four']		1表示跨度
print(fuu[0:5:-1])
#[]
print(fuu[::-1])
#['four', '铃兰', '老虎', 'two', 1]   -1表示跨度,输出倒序

列表添加元素

原型:heros.append() #添加单个元素
(heros为我自己定义的列表)

添加单个元素
原型:heros.append()
heros=["钢铁侠","绿巨人"]
heros.append("黑寡妇")
print(heros)
#['钢铁侠', '绿巨人', '黑寡妇']

添加多个元素
原型:heros.extend()

添加多个元素
原型:heros.extend()
heros.extend(["鹰眼","灭霸","雷神"])
print(heros)
#['钢铁侠', '绿巨人', '黑寡妇', '鹰眼', '灭霸', '雷神']

切片

s[起始位置:末尾位置:跨服]

>>> s=[1,2,3,4,5]
>>> s[:]#只有‘:’输出全部
[1, 2, 3, 4, 5]
>>> s[1:3:1]#起始位置为1,末尾位置为3,跨服为1
[2, 3]
>>> s[0:3:1]#默认第一个元素下标为0
[1, 2, 3]
>>> s[:3:1]#默认第一个元素下标为0,可以不写
[1, 2, 3]
>>> s[::1]#当跨服存在时,起始位置和末尾位置均可省略,默认为全部
[1, 2, 3, 4, 5]
>>> s[::2]
[1, 3, 5]

当跨服为负数时,倒序输出

>>> s[::-2]
[5, 3, 1]
>>> s[::-1]
[5, 4, 3, 2, 1]
切片添加元素
s=[1,2,3,4,5]
s[len(s):]=[6]
s
>>>[1, 2, 3, 4, 5, 6]
s[len(s):]=[7,8,9]
s
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9]

插入元素

原型:s.insert(x,y)
x:插入位置
y:插入元素

原型:s.insert(x,y)
x:插入位置
y:插入元素
s=[1,3,4,5]
s.insert(1,2)
s
>>>[1, 2, 3, 4, 5]
>s.insert(len(s),6) #len(s)代表最后一个元素
s
>>>[1, 2, 3, 4, 5, 6]

删除元素

原型:heros.remove(k) #k为要删除的元素

原型:heros.remove(k) #k为要删除的元素
heros=['钢铁侠', '绿巨人', '黑寡妇', '鹰眼', '灭霸', '雷神']
heros.remove('灭霸')
heros
>>>['钢铁侠', '绿巨人', '黑寡妇', '鹰眼', '雷神']

.pop(n)同样具有删除功能,n为该元素的下标值,pop函数删除元素的同时,也返回该元素

>>> s
[1, 2, 3, 4, 5, 6, 7]
>>> s.pop(2)
3
>>> s
[1, 2, 4, 5, 6, 7]

清空列表

.clear()

>>> s.clear()
>>> s
[]

替换元素

heros[0]="黑豹"
heros
>>>['黑豹', '绿巨人', '黑寡妇', '鹰眼', '雷神']
heros[3:]=["武松","林冲","李逵"]
heros
>>>['黑豹', '绿巨人', '黑寡妇', '武松', '林冲', '李逵']

排序、查找、拷贝

正序:num.sort() #将所有元素从小到大排列
num.sort(reverse=True) #将所有元素从大到小排列
倒序:num.reverse() #将所有元素倒过来

正序:num.sort()  #将所有元素从小到大排列
num.sort(reverse=True)  #将所有元素从大到小排列
倒序:num.reverse() #将所有元素倒过来
num=[4,4,2,7,9,3,1,4,8,2,7,3,9]
num.sort()
num
>>>[1, 2, 2, 3, 3, 4, 4, 4, 7, 7, 8, 9, 9]
num.reverse()
num
>>>[9, 9, 8, 7, 7, 4, 4, 4, 3, 3, 2, 2, 1]

查找元素数量num.count(x)
#查找列表中 x 的数量
查找元素位置num.index(x,y,z)
#在 y~z 区间内,查找第一个 x 出现的位置(y>=0),yz 可以省略(全区域查找)

查找数量:num.count(x) #查找列表中 x 的数量
num
[9, 9, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]
num.count(9)
>>>2
查找位置:num.index(x)  #查找列表中第一个x出现的位置,初始位置为0
num.index(x,y,z)   #在y~z区间内,查找第一个x出现的位置(y>=0)
num.index(7)
4
num.index(9)
0
#引用和拷贝的区别
#被引用的数据发生改变,引用者也会发生改变,但拷贝不会发生改变
#(只对一维列表以下有效)

引用:

#例:
num=[9, 9, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]
numm=num
numm
>>>[9, 9, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]
num[0]=1#被引用列表改变
numm
>>>[1, 9, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]#引用的列表也改变
numm[1]=0#引用列表改变
num
>>>[1, 0, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]#被引用的列表也改变
numm
>>>[1, 0, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]

浅拷贝:num.copy()

浅拷贝:num.copy()
num=[9, 9, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]
num1=num.copy()
num1
>>>[9, 9, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]

切片浅拷贝:num2=num[:]
num2=num[:]
num2
>>>[9, 9, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]
num[0]=1#原列表改变,拷贝列表不改变
num
>>>[1, 9, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]
num1
>>>[9, 9, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]
num2
>>>[9, 9, 8, 5, 7, 4, 4, 4, 3, 3, 2, 2, 1]

深拷贝:copy.deepcopy(num)

#当列表为二维以上时,浅拷贝也无法在发挥作用
num=[[1,2],[3,4],[5,6]]
num
>>>[[1, 2], [3, 4], [5, 6]]
import copy#引入copy库
num1=copy.copy(num)#浅拷贝
num1
>>>[[1, 2], [3, 4], [5, 6]]
num[0][0]=7
num1
>>>[[7, 2], [3, 4], [5, 6]]
#此时用深拷贝更为合适
num2=copy.deepcopy(num)#深拷贝,适用任意维度的列表
num[0][0]=9
num
>>>[[9, 2], [3, 4], [5, 6]]
num2
>>>[[7, 2], [3, 4], [5, 6]]
#浅拷贝像是复制的快捷方式,而深拷贝直接复制源文件

列表之间的相加

s=[1,2,3]
t=[4,5,6]
s+t
>>>[1, 2, 3, 4, 5, 6]
t+s
>>>[4, 5, 6, 1, 2, 3]

二维列表

创建二维列表:
Q=[0]*3					#3表示三行
Q
>>>[0, 0, 0]
for i in range(3):		
#这里的3也表示三行,并且由于上边定义三行,所以此处的3只能写<=3的数
    Q[i]=[0]*3			#此处的3为自定义,写多少自己定,没有限制
Q
>>>[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
for i in range(3):
    Q[i]=[0]*4
Q
>>>[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

mag[x][y]				#x代表第几行,y代表第几列
mag=[[1,2,3],[4,5,6],[7,8,9]]
mag
>>>[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in mag:
    for each in i:
        print(each)
     
>>>1
>>>2
>>>3
>>>4
>>>5
>>>6
>>>7
>>>8
>>>9
for i in mag:
    for each in i:
        print(each,end=' ')		#end=' '表示不换行
    print()						#print()表示换行
 
>>>1 2 3 
>>>4 5 6 
>>>7 8 9 
mag[0][1]
>>>2
mag[1][1]
>>>5
mag[2][1]
>>>8

列表推导式

在这里插入图片描述

[expression for target in iterable]

x=[i for i in range(10)]
x
>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
x=[i+1 for i in range(10)]
x
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
oho=[1,2,3,4,5]
oho=[i*2 for i in oho]
oho
>>>[2, 4, 6, 8, 10]

关于字符串

#关于字符串
y=[c*2 for c in "FishC"]
y
>>>['FF', 'ii', 'ss', 'hh', 'CC']

Unicode编码

#Unicode编码
code =[ord(c) for c in "FishC"]
code
>>>[70, 105, 115, 104, 67]

从字符串中取值

#从字符串中取值
mog=[[1,2,3],[4,5,6],[7,8,9]]		
col=[row[1] for row in mog]			#从字符串每一行中取第二列的元素
col
>>>[2, 5, 8]

多个表达式推导

#多个表达式
even=[i for i in range(10) if i%2 ==0]
#先执行for 在执行if 最后执行i
even
>>>[0, 2, 4, 6, 8]
even=[i+1 for i in range(10) if i%2 ==0]
even
>>>[1, 3, 5, 7, 9]
#筛选首字母为F的单词
words=["Ewhun","Fbyuv","Dbubu","Fsoicb","Sbdch"]
fwords=[w for w in words if w[0]=='F']
fwords
>>>['Fbyuv', 'Fsoicb']
#二维列表一维化
mog=[[1,2,3],[4,5,6],[7,8,9]]
mog1=[i for x in mog for i in x]#类似于循环的嵌套
mog1
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9]
#笛卡尔乘积
[x+y for x in "vghhl" for y in "eiukj"]
>>>['ve', 'vi', 'vu', 'vk', 'vj', 'ge', 'gi', 'gu', 'gk', 'gj', 'he', 'hi', 'hu', 'hk', 'hj', 'he', 'hi', 'hu', 'hk', 'hj', 'le', 'li', 'lu', 'lk', 'lj']

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值