Python教程-4. 列表List

List

Posted by xuepro on November 15, 2017

list

任意对象的有序集合(顺序集合)。用方括号[]定义,元素之间以逗号隔开:

L1 = [20,3,45,68]
L1 = [20,3,45.78,'A',"string"]
L1 = [20,3,45.78,'A',"string",["abc","xyz","uvw"]]

通过下标访问(读写)每个数据元素,下标从0开始。

# 下标: 0   1   2     3      4
# 下标:-5  -4  -3     -2    -1
L1 = [20, 3, 45.78, 'A', "string"]
L1[2]
L1[-1]= 90

通过下标范围访问(读写)一个子列表(list)。

# 格式: 列表名[起始位置:结束位置] ,返回一个列表,但不包括最后位置的元素。
   
# 下标: 0   1   2     3      4
# 下标:-5  -4  -3     -2    -1
>>>L1 = [20, 3, 45.78, 'A', "string"]
>>>L1[0:3]
>>>L1[:4]
>>>L1[-3:-1]
>>>L1[:]
>>>L1[0:5:2] #第二个:用于指定步长,即间隔2个取一个元素
[20,45.78,"string"]

>>>L1[:3]= 100 # 错:必须用列表给列表赋值
>>>L1[:3] = [80,90]  #必须用列表给列表赋值

[80,90, 'A', "string"]
>>>L1[:3] = (80,90) 

#可以用元素(圆括号()构成的有序集合)给列表赋值吗? 因此,可以给列表一个可迭代的对象

>>> L1=[1,2,3,4,5]
>>>>L1[::2]= [50] 

#!如果左边是带有步长的范围,右边的可迭代对象如列表必须有相同个数的数据元素

>>>>L1[::2]= [50,60,70]  
#!如果左边是带有步长的范围,右边的可迭代对象如列表必须有相同个数的数据元素

可以通过range函数生成一个序列来构造列表

>>>L1 = list(rang(5))
[0,1,2,3,4]

可以用全局函数或列表自身的方法操作列表.如用列表的方法append追加一个元素、用extend扩展列表,用全局函数len得到列表的元素个数。

>>>L1 = [20, 3, 45.78, 'A', "string"]
>>>L1.append(67)  #在最后追加一个元素  
>>>L1.append(67,89)  # 错:append函数只接受一个参数
>>>L1.append([67,89]) 

# append函数接受一个参数,但可以是任意对象
     [20, 3, 45.78, 'A', "string",67,[67,89]]
>>>len(L1) #全局函数len返回列表L1中的数据元素个数
7
>>>L1.extend(10,20)  # 错:extend函数只接受一个参数     
>>>L1.extend([10,20])  # extend函数总是接受一个列表
[20, 3, 45.78, 'A', "string",67,[67,89],10,20]   # 10,20称为2个元素而不是一个列表元素

>>>L1.extend(30)  # 错: extend函数总是接受一个列表

通过列表list的insert方法插入一个元素。

# 格式: insert(插入位置,插入元素值)

>>>L1= [1,2,3,4,5,6]
>>>L1.insert(1,99)
[1,99,2,3,4,5,6]
#当然也可以通过给列表赋值的方法进行插入,如
>>>L1[1:1]=[100]
[1,100,99,2,3,4,5,6]

再看一些其他常用函数和方法:

>>> L1= [1,2,3,2,5,6]
>>> min(L1)
>>> max(L1)
>>> sum(L1)
>>> a = 2
>>> L1.index(a)  #查找a=2在列表中的位置
>>> L1.count(a) # 统计a=2在列表中出现的次数

可以通过加法运算符 + 来拼接字符串,或者用乘法运算符*

>>>L1 = [0,1,2,3]
>>>L1 + [4,5,6,7]
[0,1,2,3,4,5,6,7]
>>> L1*3
[0,1,2,3,0,1,2,3,0,1,2,3]
>>> L1 
[0,1,2,3] # 说明加法和乘法并没有影响原来的列表,而是产生一个新的列表

删除元素

# 通过del 运算符删除列表中的元素

>>>L1 = [1,2,3,4,5,6,,7,8,9]
>>> del L1[2]
[1,2,4,5,6,7,8,9]
>>> del[::2]
[2,5,7,9]

#通过赋值空列表方法也可以删除
>>>L1[:2]=[] 
[9]
    
# 通过列表的remove方法删除第一个值匹配的元素
>>>L1=[2,4,5,3,6,3]
>>> L1.remove(3)
[2,4,5,6,3]

# 通过clear清空列表
>>> L1.clear()
>>> L1
[]
    
# 通过list的pop方法删除一个元素,如
>>> L=[1,2,3,4,5]
>>>L.pop();  # 不带参数表示删除最后一个元素   
>>>L.pop(0)  ##删除下标是0的第一个元素
>>>L
[2,3,4]

可用in来判断一个元素是否在一个列表里

>>>L1 = ["Hello",80, 95.5]
>>> a= 80
>>> a in L1
False
>>> a= "hello"
>>> a not in L1
True

可用not in来判断一个元素是否不在一个列表里

>>>L1 = ["Hello",80, 95.5]
>>> a= 80
>>> a not in L1
True
>>> a= "hello"
>>> a in L1
False
>>> a= 95.5000
>>> a in L1
False

复制列表

>>> L = [1,2,3,4,5,6]
>>> S = L  # S和L都是同一个列表的名字,修改任何一个就是修改另外一个
>>> S = L[:] # S,L是相互独立的
>>> S = L.copy()  # S,L是相互独立的

排序sort

>>> L = ["Lipin","ZhangWei","Scott","Hello"]
>>> L.sort();
>>> L.sort(f= lambda x: x[-1])    

#传入一个lambda函数,按照最后一个字母来排序
>>> L = [45,13,28,5,89,24]
>>> L.sort(reverse=true)  

#也可以用全局函数来对列表排序
>>> L = ["Lipin","ZhangWei","Scott","Hello"]
>>> S = sorted(L,f= lambda x: x[-1])  #将返回一个排序好的列表,S和L是同一个列表对象吗?

Python列表操作的函数和方法

  • 列表操作包含以下函数:
1、cmp(list1, list2):比较两个列表的元素 
2、len(list):列表元素个数 
3、max(list):返回列表元素最大值 
4、min(list):返回列表元素最小值 
5、list(seq):将元组转换为列表 
  • 列表操作包含以下方法:
    1、list.append(obj):在列表末尾添加新的对象
    2、list.count(obj):统计某个元素在列表中出现的次数
    3、list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    4、list.index(obj):从列表中找出某个值第一个匹配项的索引位置
    5、list.insert(index, obj):将对象插入列表
    6、list.pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    7、list.remove(obj):移除列表中某个值的第一个匹配项
    8、list.reverse():反向列表中元素
    9、list.sort([func]):对原列表进行排序
    

参考:

An Introduction to Python Lists

http://www.tutorialspoint.com/python/python_lists.htm


支付宝打赏 微信打赏

您的打赏是对我最大的鼓励!