python 中的列表(list)

时间:2021-10-06 21:18:12

一、生成一个列表

  • 直接生成
    L1 = [1, 2, 3, 4, 5]
  • 列表解析式
>>> L2 = [x for x in range(1, 10, 2)]  #从1到10的迭代,步长为2,形成一个列表
>>> print(L2)
[1, 3, 5, 7, 9]
>>> 
>>> [x for x in range(10) if x <5]   #从0到10当中,小于5的数字形成列表
[0, 1, 2, 3, 4]

二、访问列表及列表的切片

list[index] 访问列表中索引处的值
L3 = ["A-0","B-1","C-2",'D-3',"E-4","F-5"]
print("第零个元素:",L3[0],"\n第4个元素:",L3[4])

#结果为:
第零个元素: A-0 
第4个元素: E-4
list[0: 3] 对列表中的第0个到第3个元素进行切片,同理还可以 list[ : 3]  或者list[3:6] 
L4 = ["北京", "上海", "广州", "深圳", "天津", "重庆", "南京", "成都", "武汉", "长沙", "杭州", "昆明"]
print(len(L4))          #len()函数返回列表长度
print(L4[0: 4])        #切片从第0个到第4个,输入0,1,2,3这几个索引位置的元素

#输出为:
12
['北京', '上海', '广州', '深圳']

#----------------------------------分割线-------------------------------------
print(L4[4: 8])        #中间切片
print(L4[9: -1])        #第9到-1个
print(L4[10: ])         #第10 到最后

#输出为:
['天津', '重庆', '南京', '成都']
['长沙', '杭州']
['杭州', '昆明']

#----------------------------------分割线-------------------------------------
#补充,字符串对象是可迭代的,也可以这样用哦!
name = "Josh Vietti"
print(len(name))
print(name[5:])

#结果为:
11
Vietti

三、列表的函数及操作

3.1 列表的函数

1、len(list) 返回列表长度,字符串也可以这么求长度,以及切片等,如上程序段,最后字符串部分。
2、max(list) 返回列表中的最大值
3、min(list) 返回列表中最小值
4、list(seq) 把元组变为列表也是可以的

注意同类型的数据才能比较大小

l = [1, 3, 5, 4, 8, 11, 7]
print("最大值为:max(l) = ",max(l),"\n最小值为:min(l) = ",min(l))
tuple1 = (1,3,5,"s")
l2 = list(tuple1)
print("将元组转变为列表 list(tuple1) --->:",l2)

try:
    max(l2)       #l2列表中既有int又有str,数据类型不同不能比较
except TypeError as e:
    print(e)

#以上程序运行结果为:
最大值为:max(l) =  11 
最小值为:min(l) =  1
将元组转变为列表 list(tuple1) --->: [1, 3, 5, 's']
unorderable types: str() > int()

3.2 列表的操作

1、list.append(obj)  在列表末尾添加对象
2、list.count(obj)     统计某元素在列表中出现的次数
3、list.extend(list_2)  将list_2列表追加到列表后,融合形成一个新列表
4、list.index(ojb)    从列表中找出第一次匹配到该元素的位置
5、list.insert(index, obj)   在index 索引位置插入对象obj
6、list.pop(index)  删除并且返回索引处的值,默认删除列表最后一个值
7、list.remove(obj) 移除列表中obj对象
8、list.reverse()  将列表元素反转
9、list.sort(key = func, reverse = False)   排序列表,key参数默认None,接受函数作为参数,会将函数应用于列表中的每一个元素。reverse参数False为正向排序,True为反向排序
10、list.clear()  清空列表中所有元素,也可以用 del list[ : ] 来清空列表,注意 del list 会把整个列表删除
L1 = ["A", "B", "A", "C"]
L2 = ["E", "F"]
L1.append("d")    #1、list.append() 往L1末尾添加 'd'
num_A = L1.count("A") #2、list.count() 统计L1中字符A的个数

print("L1:", L1,"\n统计L1中字符A的个数:",num_A)

L1.extend(L2)   #3、list.extend() 将L2融合到L1中
index_d = L1.index("d")   #4、list.index() 查找'd'的索引
print("新L1:", L1,"\nd的索引为:", index_d)

#----------------------------------分割线-------------------------------------
#结果为:
L1: ['A', 'B', 'A', 'C', 'd'] 
统计L1中字符A的个数: 2
新L1: ['A', 'B', 'A', 'C', 'd', 'E', 'F'] 
d的索引为: 4

#----------------------------------分割线-------------------------------------
L1.remove("d")  #list.remove() 移除L1当中的'd'

print("移除'd'后的L1:", L1)
L1.insert(1, "D") #list.insert() 往L1索引1处插入大写'D'
L2.insert(2,3)    #list.insert() 往L2索引2处插入数字3

print("新L1:", L1, "\nL2:", L2)

#----------------------------------分割线-------------------------------------
#结果为:
移除'd'后的L1: ['A', 'B', 'A', 'C', 'E', 'F']
新L1: ['A', 'D', 'B', 'A', 'C', 'E', 'F'] 
L2: ['E', 'F', 3]

#----------------------------------分割线-------------------------------------
print("删除并返回L1中的第五个元素:", L1.pop(5),"\nL1:",L1)       #使用list.pop(index) 删除指定索引的值
print("删除最后一个元素:", L1.pop(), '\n{0: ^8}:'.format("L1"), L1)
L1.reverse()
print('反置列表:', L1)
L1.clear()    #list.clear()清空列表
 del L2[:]    #del list[:] 清空列表
print('清空列表L1:', L1)
print('清空列表L2:',L2)

#----------------------------------分割线-------------------------------------
#结果为:
删除并返回L1中的第五个元素: E 
L1: ['A', 'D', 'B', 'A', 'C', 'F']
删除最后一个元素: F 
   L1   : ['A', 'D', 'B', 'A', 'C']
反置列表: ['C', 'A', 'B', 'D', 'A']
清空列表L1: []
清空列表L2: []
  • list.sort()的应用
l_test = ["a", "B", "c"]
l_test.sort(reverse= True)
print("默认key=None直接排序,reverse= True 反排:", l_test)   #反向排序
l_test.sort(key=str.upper)
print("默认reverse,key=str.upper 将所有字符大写:", l_test)   #正向排序

#----------------------------------分割线-------------------------------------
#结果为:
默认key=None直接排序,reverse= True 反排: ['c', 'a', 'B']
默认reverse,key=str.upper 将所有字符大写: ['a', 'B', 'c']