Python-列表

浏览: 1053

列表基础

列表定义:一有序数据集合用逗号间隔方括号括起来

列表的索引访问(索引list_name[index]和切片list_name[start:end:step])

 wu=[1,2,3,4]
print(wu[1])
wu[1]=[5,6,7]
print(wu)
print(wu[1][1])
[root@localhost ~]# python 1.py
2
[
1, [5, 6, 7], 3, 4]
6

列表遍历

 wu=[1,2,3,4]
#### iteror
for i in wu:
print(i),
#print(i,)
#print(i)
print('')
i=0
while i<len(wu):
print(wu[i]),
i +=1
[root@localhost ~]# python 1.py
1 2 3 4
1 2 3 4

理解for迭代

 a=range(1,10)
for x in a:
print('for',x)
a.pop(1)
print(a)
[root@localhost ~]# python 1.py
(
'for', 1)
[
1, 3, 4, 5, 6, 7, 8, 9]
(
'for', 3)
[
1, 4, 5, 6, 7, 8, 9]
(
'for', 5)
[
1, 5, 6, 7, 8, 9]
(
'for', 7)
[
1, 6, 7, 8, 9]
(
'for', 9)
[
1, 7, 8, 9]

列表里的最大值

 li=[23,45,55,66,743]
i=1
max=li[0]
while i<len(li):
if li[i]>max:
max=li[i]
i +=1
print('max',max)
print('###')
max=li[0]
for i in li:
if i>max:
print('max',max)
[root@localhost ~]# python 1.py
(
'max', 743)
###
(
'max', 743)

找第二大值

 li=[23,45,55,66,743]
i=0
max1=li[0]
max2=li[0]
while i<len(li):
if max1<li[i]:
max2=max1
else:
if max2<li[i]:
max2=li[i]
i +=1
print('max1',max1)
print('max2',max2)
[root@localhost ~]# python 1.py
(
'max1', 743)
(
'max2', 66)

方法二:

li=[23,45,55,66,743]
i=0
max1=li[0]
max2=li[0]
for x in li:
if max1<x:
max2=max1
max1=x
else:
if max2<x:
max2=x
print('max1',max1)
print('max2',max2)

列表运算

列表加法

li1=[1,2,3]
li2=[4,5,6]
li=li1+li2
print(li)
[root@localhost ~]# python 1.py
[
1, 2, 3, 4, 5, 6]
 li1=range(1,10)
li2=range(11,20)
print(li1)
print(li2)
i=0
while i <len(li1):
li1[i] += li2[i]
i +=1
print(li1)
[root@localhost ~]# python 1.py
[
1, 2, 3, 4, 5, 6, 7, 8, 9]
[
11, 12, 13, 14, 15, 16, 17, 18, 19]
[
12, 14, 16, 18, 20, 22, 24, 26, 28]

打印多层列表

index函数

li=range(1,11)
print(li)
print(li.index(6))
[root@localhost ~]# python 1.py
[
1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
5

index函数

>>> li=range(1,11)
>>> li
[
1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> li[3:9]
[
4, 5, 6, 7, 8, 9]
>>> li[-7:-1]
[
4, 5, 6, 7, 8, 9]
>>> li[li.index(4):li.index(9)+1]
[
4, 5, 6, 7, 8, 9]

正负坐标的关系

>>> li=range(10,2100,2)
>>> li[li.index(120):li.index(160)+1]
[
120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160]
>>> li[li.index(120)-len(li):li.index(160)+1-len(li)]
[
120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160]
 li=range(1,11)
>>> li[3:8]
[4, 5, 6, 7, 8]
>>> li[-7:-2]
[4, 5, 6, 7, 8]
>>> li[3:8:1]
[4, 5, 6, 7, 8]
>>> li[-7:-2:1]
[4, 5, 6, 7, 8]
>>> li[li.index(4):li.index(8)+1]
[4, 5, 6, 7, 8]
>>> li[li.index(8):li.index(4)-1:-1]
[8, 7, 6, 5, 4]
>>> li[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> li[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

 insert函数

li=['wujiadong']
print(li)
li=list('wujiadong')
print(li)
li.insert(1,12) print(li)

image.png

指定位置插入数据

 li1=range(1,5)
li2=range(10,15)
i=0
while i< len(li2):
li1.insert(2,li2[len(li2)-1-i])
i +=1
print(li1)
#index max:len()-1

image.png

li1=range(1,5)
li2=range(6,11)
li1.append(li2) #li2列表整体加上去 #L.extend(iterable),可迭代的,假如是一个整型9 就不行
print(li1)
li1.extend(li2) #列表中的元素加上li1去 #L.append(object)
print(li1)

image.png

li1=list('abc')
li2=list((1,2,3))
print(li1)
print(li2)
li1.extend(li2)
print(li1)
li1 +=li2
print(li1)

image.png

用append实现extend

li1=range(1,5)
li2=range(6,11)
i=0
while i<len(li2):
li1.append(li2[i])
i +=1
print(li1)

image.png

 a='wu jia dong '
a1=a.split()
print(a1)
a2=tuple(a1)
print(a2)
a=[1,2,3]
a3=tuple(a)
print(a3)

image.png

pop()函数 ——L.pop([index]) ,不写数字默认为最后一个

 li = range(1,5)
li.pop()
print(li)
li=range(1,5)
li.pop(2)
print(li)

image.png

split()函数

描述: split()通过指定分隔符对字符串进行分割,如果参数num 有指定值,则仅分隔 num 个子字符串

语法:str.split(str="", num=string.count(str))

参数:str ——分隔符,默认为空格 ,num -- 分割次数

 a='hello wujia dong '
a1=a.split() #按空格分割,删除空格
a2=a.split('o',1) #按o分割,删除o,分割1次
print(a1)
print(a2)

image.png

pop掉某个元素

li=[1,2,3,1,1,3,1,1,3,3,]
i=0
while i<len(li):
if li[i]==1:
li.pop(i)
i -=1 #?没搞懂这个
i +=1
print(li)

image.png

在理解上面的基础上删除重复的元素(一分为二思想)

li=[1,2,3,1,1,3,1,1,3,3,]
i=0
while i<len(li):
if li[i]==1:
temp1=li[:i+1]
temp2=li[i+1:]
break #?
i+=1
i=0
while i<len(temp2):
if temp2[i]==1:
temp2.pop(i)
i -=1
i +=1
print(temp1+temp2)

image.png

i=[1,3,2,2,3,2,1,3]
i=0
while i<len(li):
if li[i]==2:
li.pop(i)
i -=1
i +=1
print(li)

image.png

如果要删除所有重复的元素,重复的只留一个,怎么做?

############没有看懂###############
li=[1,2,3,4,2,2,3,2,3,2,4,5,6,4,78]
print(li.count(2))
i=0
while i<len(li):
pf=li.index(li[i])
if li.count(li[i])>1:
li.pop(li.index(li[i],pf+1))
i -=1
i +=1
print(li)

image.png

remove()函数——L.remove(value)

li=[1,3,2,2,3,2,1,3]
i=0
while i2): #随着2 的删除,li.count(2)发生了变化,产生1<2导致没有全部删除

li.remove(2) #remove 是删除值
i +=1
print(li) #为什么2没有全部删除掉
print('.........................')
li=[1,3,2,2,3,2,1,3]
i=0
x=li.count(2) #2的个数在循环外,这样就不会随着循环而改变了
while i<x:
li.remove(2)
i +=1
print(li)

image.png

去重的另一种办法:

li=[1,2,3,4,5,56,2,3,54]
it =[]
i=0
while i<len(li):
if li[i] not in it:
it.append(li[i])
i +=1
print(it) #重复的没有添加进去
 it=[]
for x in li:
if x not in it:
it.append(x)
print(it) #重复的没有添加进去

image.png

方法三:(去重比较方便)

 it=[]
it=list(set(li)) #不添加重复的,结果和上面一样
print(it)
推荐 0
本文由 邬家栋 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册