Python-列表

列表基础

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

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

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

列表遍历

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

理解for迭代

1 a=range(1,10)
2 for x in a:
3      print('for',x)
4      a.pop(1)
5      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]

列表里的最大值

 1 li=[23,45,55,66,743]
 2 i=1
 3 max=li[0]
 4 while i<len(li):
 5    if li[i]>max:
 6        max=li[i]
 7    i +=1
 8 print('max',max)
 9 print('###')
10 max=li[0]
11 for i in li:
12     if i>max:
13        max=i
14 print('max',max)
[root@localhost ~]# python 1.py
('max', 743)
###
('max', 743)

找第二大值

 1 li=[23,45,55,66,743]
 2 i=0
 3 max1=li[0]
 4 max2=li[0]
 5 while i<len(li):
 6     if max1<li[i]:
 7        max2=max1
 8        max1=li[i]
 9     else:
10         if max2<li[i]:
11            max2=li[i]
12     i +=1
13 print('max1',max1)
14 print('max2',max2)
[root@localhost ~]# python 1.py
('max1', 743)
('max2', 66)

方法二:

 1 li=[23,45,55,66,743]
 2 i=0
 3 max1=li[0]
 4 max2=li[0]
 5 for x in li:
 6     if max1<x:
 7        max2=max1
 8        max1=x
 9     else:
10         if max2<x:
11            max2=x
12 print('max1',max1)
13 print('max2',max2)

列表运算

列表加法

1 li1=[1,2,3]
2 li2=[4,5,6]
3 li=li1+li2
4 print(li)
[root@localhost ~]# python 1.py
[1, 2, 3, 4, 5, 6]

 

1 li1=range(1,10)
2 li2=range(11,20)
3 print(li1)
4 print(li2)
5 i=0
6 while i <len(li1):
7     li1[i] += li2[i]
8     i +=1
9 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函数

1 li=range(1,11)
2 print(li)
3 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)
1
>>> li[3:8] 2 [4, 5, 6, 7, 8] 3 >>> li[-7:-2] 4 [4, 5, 6, 7, 8] 5 >>> li[3:8:1] 6 [4, 5, 6, 7, 8] 7 >>> li[-7:-2:1] 8 [4, 5, 6, 7, 8] 9 >>> li[li.index(4):li.index(8)+1] 10 [4, 5, 6, 7, 8] 11 >>> li[li.index(8):li.index(4)-1:-1] 12 [8, 7, 6, 5, 4] 13 >>> li[:] 14 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 15 >>> li[::-1] 16 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

 insert函数

1 li=['wujiadong']
2 print(li)
3 li=list('wujiadong')
4 print(li)
5 li.insert(1,12)
6 print(li)

指定位置插入数据

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

函数append()和extend()

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

 

1 li1=list('abc')
2 li2=list((1,2,3))
3 print(li1)
4 print(li2)
5 li1.extend(li2)
6 print(li1)
7 li1 +=li2
8 print(li1)

用append实现extend

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

字符串和列表转元组

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

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

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

split()函数

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

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

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

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

 

pop掉某个元素

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

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

 1 li=[1,2,3,1,1,3,1,1,3,3,]
 2 i=0
 3 while i<len(li):
 4     if li[i]==1:
 5        temp1=li[:i+1]
 6        temp2=li[i+1:]
 7        break #?   
 8     i+=1
 9 i=0
10 while i<len(temp2):
11     if temp2[i]==1:
12        temp2.pop(i)
13        i -=1
14     i +=1
15 print(temp1+temp2)

 

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

 

 

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

 

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

 

 

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

 1 li=[1,3,2,2,3,2,1,3]
 2 i=0
 3 while i<li.count(2):      #随着2 的删除,li.count(2)发生了变化,产生1<2导致没有全部删除
 4 
 5     li.remove(2)        #remove 是删除值
 6     i +=1
 7 print(li)               #为什么2没有全部删除掉
 8 print('.........................')
 9 li=[1,3,2,2,3,2,1,3]
10 i=0
11 x=li.count(2)           #2的个数在循环外,这样就不会随着循环而改变了
12 while i<x:
13     li.remove(2)
14     i +=1
15 print(li)

去重的另一种办法:

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

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

1 it=[]
2 it=list(set(li))   #不添加重复的,结果和上面一样
3 print(it)

 

posted @ 2015-11-14 22:25  邬家栋  阅读(265)  评论(0编辑  收藏  举报