列表
具体实例
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),y 和 z 可以省略(全区域查找)
查找数量: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']