1. 列表
列表的特点
-
列表是有序的
-
列表是可变的
-
列表支持切片、索引、步长
-
列表支持增删改的操作
-
列表支持嵌套使用
列表的切片
索引的方法和字符串的索引一样,使用列表元素的下标。
切片的方法也和字符串的切片一样,但是切片后的结果是列表。
列表跟字符串一样,切片时支持步长和反向步长。
var_select = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
print(var_select)
print(var_select[2])
print(var_select[1:-4])
print(var_select[1::2])
for i in var_select:
print(i)
>>>
['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
yy
[20, 'yy']
[20, 'yan', 'yy']
liyan
20
yy
yan
True
yy
liyan
列表的增删改查
增加:
var_insert = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
print(var_insert.insert(1, 'yange'))
print(var_insert)
>>>
None
['liyan', 'yange', 20, 'yy', 'yan', True, 'yy', 'liyan']
var_insert = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
print(var_insert.append('yange'))
print(var_insert)
>>>
None
['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan', 'yange']
var_insert = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
print(var_insert.extend('yange'))
print(var_insert)
>>>
None
['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan', 'y', 'a', 'n', 'g', 'e']
删除:
-
pop:按照下标删除,有返回值(返回已删除的元素名),超过索引值会报错
var_delete = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
print(var_delete.pop(0))
print(var_delete)
>>>
liyan
[20, 'yy', 'yan', True, 'yy', 'liyan']
-
remove:根据指定字符或字符串删除第一个匹配的列表元素名,无返回值,若列表中不存在元素会报错
var_delete = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
print(var_delete.remove('yy'))
print(var_delete)
print(var_delete.remove('yy1'))
>>>
None
['liyan', 20, 'yan', True, 'yy', 'liyan']
ValueError: list.remove(x): x not in list
var_delete = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
print(var_delete.clear())
print(var_delete)
>>>
None
[]
-
del:按照下标删除、或者切片删除,也可以删除列表,无返回值
var_delete = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
del var_delete[0]
print(var_delete)
del var_delete[-3:-1]
print(var_delete)
del var_delete[-1:0:-2]
print(var_delete)
>>>
[20, 'yy', 'yan', True, 'yy', 'liyan']
[20, 'yy', 'yan', 'liyan']
[20, 'yan']
修改:
var_update = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
var_update[0] = 'yange'
print(var_update)
>>>
['yange', 20, 'yy', 'yan', True, 'yy', 'liyan']
-
根据元素切片进行修改(根据切片修改时是先删除切片范围内的元素,再把指定的字符或字符串迭代添加到列表中的切片位置。如果修改的值是一个列表,把列表中的元素添加到列表中的切片位置。)
var_update = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
var_update[2:5] = 'yange'
print(var_update)
>>>
['liyan', 20, 'y', 'a', 'n', 'g', 'e', 'yy', 'liyan']
查询:列表查询是根据索引、切片、循环的方式来获取
列表的其他操作
var = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
print(var.count('liyan'))
>>>
2
var = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
print(len(var))
>>>
7
-
index:在列表中找出指定字符或字符串第一个匹配项的下标,支持切片,找不到会报错
var = ['liyan', 20, 'yy', 'yan', True, 'yy', 'liyan']
print(var.index('yy'))
print(var.index(True, 2, 5))
print(var.index('123'))
>>>
2
4
ValueError: '123' is not in list
-
sort:在原位置对列表进行排序,默认正序排列,sort(reverse=True)倒序排序
var = [1, 3, 123, 2, 452, 34, 53, 65, 3, 213, 42, 45, 3, 56, 21, 34]
print(var.sort())
print(var)
print(var.sort(reverse=True))
print(var)
>>>
None
[1, 2, 3, 3, 3, 21, 34, 34, 42, 45, 53, 56, 65, 123, 213, 452]
None
[452, 213, 123, 65, 56, 53, 45, 42, 34, 34, 21, 3, 3, 3, 2, 1]
var = [1, 3, 123, 2, 452, 34, 53, 65, 3, 213, 42, 45, 3, 56, 21, 34]
print(var.reverse())
print(var)
>>>
None
[34, 21, 56, 3, 45, 42, 213, 3, 65, 53, 34, 452, 2, 123, 3, 1]
列表的嵌套
var = ['liyan', 20, [1, 'yange', 2, True, ['aaa', 55], 'liyan'], 'yan', True, 'yy', 'liyan']
var[2][1] = var[2][1].upper()
print(var)
var[2][4][1] = var[2][4][1] + var[1]
print(var)
var[2][0:-1] = 'yy'
print(var)
>>>
['liyan', 20, [1, 'YANGE', 2, True, ['aaa', 55], 'liyan'], 'yan', True, 'yy', 'liyan']
['liyan', 20, [1, 'YANGE', 2, True, ['aaa', 75], 'liyan'], 'yan', True, 'yy', 'liyan']
['liyan', 20, ['y', 'y', 'liyan'], 'yan', True, 'yy', 'liyan']
-
在列表中增加列表:
-
insert:把指定列表根据指定的下标插入到列表中
-
append:把指定列表添加到列表中的最后
-
extend:把指定列表中的元素迭代添加到列表中最后
var_insert_nesting = [1, ['yange', True, 10], 'yy', False, 'liyan']
var_insert_nesting.insert(3, [1, '111'])
print(var_insert_nesting)
var_insert_nesting.append([2, '222'])
print(var_insert_nesting)
var_insert_nesting.extend([33, '333'])
print(var_insert_nesting)
>>>
[1, ['yange', True, 10], 'yy', [1, '111'], False, 'liyan']
[1, ['yange', True, 10], 'yy', [1, '111'], False, 'liyan', [2, '222']]
[1, ['yange', True, 10], 'yy', [1, '111'], False, 'liyan', [2, '222'], 33, '333']
-
在列表中删除列表:
-
pop:只能删除列表中的整个子列表,无法删除子列表中的元素
-
remove:只能删除列表中的整个子列表,无法删除子列表中的元素
-
clear:可以把列表中的子列表清空
-
del:可以删除列表中根据指定下标删除指定子列表中的元素
var_delete_nesting1 = [1, ['yange', True, 10], 'yy', False, 'liyan']
var_delete_nesting1.pop(1)
print(var_delete_nesting1)
var_delete_nesting2 = [1, ['yange', True, 10], 'yy', False, 'liyan']
var_delete_nesting2.remove(['yange', True, 10])
print(var_delete_nesting2)
var_delete_nesting3 = [1, ['yange', True, 10], 'yy', False, 'liyan']
var_delete_nesting3[1].clear()
print(var_delete_nesting3)
var_delete_nesting4 = [1, ['yange', True, 10], 'yy', False, 'liyan']
del var_delete_nesting4[1][2]
print(var_delete_nesting4)
>>>
[1, 'yy', False, 'liyan']
[1, 'yy', False, 'liyan']
[1, [], 'yy', False, 'liyan']
[1, ['yange', True], 'yy', False, 'liyan']
-
在列表中修改列表:可以根据列表中的子列表的元素下标进行修改
var_update_nesting = [1, ['yange', True, 10], 'yy', False, 'liyan']
var_update_nesting[1][0] = 'liyan'
print(var_update_nesting)
>>>
[1, ['liyan', True, 10], 'yy', False, 'liyan']
-
在列表中查询列表:可以根据列表中的子列表的元素下标进行查询
var_select_nesting = [1, ['yange', True, 10], 'yy', False, 'liyan']
print(var_select_nesting[1][2])
>>>
10
2. 元组(只读列表)
-
元组是有序的
-
元组表是不可变的
-
元组只支持查询但不支持增删改等操作
-
元组支持切片、索引、步长
-
元组中的元素不能修改,元组中的列表是可以修改的,但是元组中的元组也是不可以修改的。
-
元组支持嵌套使用
var = ('liyan', 20, 'yy', 'yan', True, 'yy', 'liyan')
print(var[2])
print(var[0:3])
print(var[-1:-5:-2])
var[2] = 18
print(var)
>>>
yy
('liyan', 20, 'yy')
('liyan', True)
TypeError: 'tuple' object does not support item assignment
var = ('liyan', 20, [1, 'yange', 2, True, ('aaa', 55), 'liyan'], 'yan', True, 'yy', 'liyan')
var[2][3] = False
print(var)
var[2][4][1] = 100
print(var)
>>>
('liyan', 20, [1, 'yange', 2, False, ('aaa', 55), 'liyan'], 'yan', True, 'yy', 'liyan')
TypeError: 'tuple' object does not support item assignment
3. range函数
-
range是一个数字范围
-
range中不能有非数值的数据类型
-
range遵守顾头不顾尾原则
-
range支持步长
for i in range(1, 10, 3):
print(i)
>>>
1
4
7