一、生成一个列表
- 直接生成
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']