Python3 - 列表和元组

264 阅读5分钟

思维导图


实战

  • 列表的创建

方式一

>>> name=['秦皇', '唐宗', '宋祖', '唐宗']
>>> name
['秦皇', '唐宗', '宋祖', '唐宗']

方式二、通过list()方法创建

>>>> name1='ABCDTWW'
>>> name2=list(name1)
>>> name2
['A', 'B', 'C', 'D', 'T', 'W', 'W']

  • 列表的切片

代码1

>>> name[:]
['秦皇', '汉武', '唐宗', '宋祖']

代码2

  从索引值0开始,到索引值3,0默认可以省略

>>> name[:3]
['秦皇', '汉武', '唐宗']

代码2

从索引值1开始,到索引值3

>>> name[1:3]
['汉武', '唐宗']

代码3

从索引值1开始,到列表末端,等同于name[1:4]

>>> name[1:]
['汉武', '唐宗', '宋祖']

代码4

反向切片,从列表最末端开始,取一个元素

>>> name[-1:]
['宋祖']

代码5

反向切片从末尾,反向取4个元素

>>> name[-4:]
['秦皇', '汉武', '唐宗', '宋祖']

代码6

>>> name[-4:-1]
['秦皇', '汉武', '唐宗']

代码7

按照步长正向切片,步长为2,默认步长是1,所以省略

>>> name[1:4:2]
['汉武', '宋祖']

代码8

按照步长逆向切片,步长为3,默认步长是1,所以省略

>>> name[-4:-1:3]
['秦皇']

  • 列表的索引

通过列表的index方法,获取元素在列表中的索引值

>>> name.index("唐宗")
2

  • 列表的统计

通过列表的count方法,获取元素在列表中的个数

>>> name.count("唐宗")
1
>>> name.append("唐宗")
>>> name.count("唐宗")
2
>>> 

  • 列表的添加

方法一,通过append() 方法添加元素

>>> name.append("Test")
>>> name
['秦皇', '汉武', '唐宗', '宋祖', '唐宗', 'Test']

方法二,通过insert方法,将元素插入到列表中的指定位置,需要索引值

>>> name.insert(1,"统计")
>>> name
['秦皇', '统计', '汉武', '唐宗', '宋祖', '唐宗', 'Test']
>>>

  • 列表的删除

通过remove 方法删除列表中的元素

>>> name.remove("Test")
>>> name
['秦皇', '统计', '汉武', '唐宗', '宋祖', '唐宗']

通过pop方法删除,如果不带索引值,默认从列表末端删除,带索引值则按照索引删除

>>> name
['秦皇', 'Test', '唐宗', '宋祖', '唐宗', ['A', 'GTQ', 'C']]
>>> name.pop()
['A', 'GTQ', 'C']
>>> name
['秦皇', 'Test', '唐宗', '宋祖', '唐宗']
>>> name.pop(1)
'Test'
>>> name
['秦皇', '唐宗', '宋祖', '唐宗']
>>> 

通过del 方法删除列表中的元素,注意del只能通过索引值删除

>>> del name[1]
>>> name
['秦皇', '汉武', '唐宗', '宋祖', '唐宗']

  • 列表的排序

通过sort方法对列表中的元素进行排序

排序规则:特殊字符-->数字-->大写字母-->小写字母

['@#', '唐宗', '唐宗', '宋祖', '汉武', '秦皇']
>>> name.sort()
>>> name
['@#', '唐宗', '唐宗', '宋祖', '汉武', '秦皇']
>>> name[3]="%43"
>>> name
['@#', '唐宗', '唐宗', '%43', '汉武', '秦皇']
>>> name.sort()
>>> name
['%43', '@#', '唐宗', '唐宗', '汉武', '秦皇']
>>> name[4]="88"
>>> name.sort()
>>> name
['%43', '88', '@#', '唐宗', '唐宗', '秦皇']
>>> 

  • 列表的拼接

通过“+”号拼接

>>> name
['%43', '88', '@#', '唐宗', '唐宗', '秦皇']
>>> name1
[2, 33, 55, 35, 88, 99]
>>> name2 = name + name1
>>> name2
['%43', '88', '@#', '唐宗', '唐宗', '秦皇', 2, 33, 55, 35, 88, 99]
>>> 

通过" * " 号拼接相同的列表

>>> name3
['A', 'B', 'C']
>>> name3 * 3
['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C']
>>> 

  • 列表的清空

通过clear方法清空列表中的所有元素

>>> name3
['A', 'B', 'C']
>>> name3.clear()
>>> name3
[]

  • 列表的反转

通过reverse方法可以将列表中的所有元素进行反转

>>> name
[1, 2, 4, 5, 6, 7, 8]
>>> name.reverse()
>>> name
[8, 7, 6, 5, 4, 2, 1]

  • 列表的拷贝

列表的浅拷贝

情况一、

   列表无嵌套列表的情况下,name2拷贝name 后,改变name中元素的值,name2中的元素不会发生变化

['秦皇', '汉武', '唐宗', '宋祖', '唐宗']
>>> name2= name.copy()
>>> name2
['秦皇', '汉武', '唐宗', '宋祖', '唐宗']
>>> name[1]='Test'
>>> name2
['秦皇', '汉武', '唐宗', '宋祖', '唐宗']

情况二、

    在列表中有嵌套列表的情况下,name2拷贝name 后,改变name中元素的值,name2中的元素会随着改变

>>> name3=['A', 'B', 'C']
>>> name
['秦皇', 'Test', '唐宗', '宋祖', '唐宗']
>>> name.append(name3)
>>> name
['秦皇', 'Test', '唐宗', '宋祖', '唐宗', ['A', 'B', 'C']]
>>> name2= name.copy()
>>> name2
['秦皇', 'Test', '唐宗', '宋祖', '唐宗', ['A', 'B', 'C']]
>>> name[5][1]='GTQ'
>>> name2
['秦皇', 'Test', '唐宗', '宋祖', '唐宗', ['A', 'GTQ', 'C']]
>>> 

列表的深拷贝

import copy

name = ["秦皇", "汉武", "唐宗", "宋祖",['A','B','C']]

name2 = copy.deepcopy(name)
name[4][1] ='光头强'
print(name)
print(name2)
['秦皇', '汉武', '唐宗', '宋祖', ['A', '光头强', 'C']]
['秦皇', '汉武', '唐宗', '宋祖', ['A', 'B', 'C']]

  • 元组的创建

方式一

>>> name2 =('秦皇', '唐宗', '宋祖', '唐宗')
>>> name2
('秦皇', '唐宗', '宋祖', '唐宗')
>>> 

方式2、使用tuple()方法创建

>>> name
['秦皇', '唐宗', '宋祖', '唐宗']
>>> name3=tuple(name)
>>> name3
('秦皇', '唐宗', '宋祖', '唐宗')
>>> 

  • 元组的统计

元组通过count方法统计元素中某个元素的个数

>>> name =('秦皇', '唐宗', '宋祖', '唐宗', '宋祖', '唐宗')
>>> name.count("唐宗")
3

  • 元素的索引

元组通过index方法,获取元素在元组中的索引值

>>> name
('秦皇', '唐宗', '宋祖', '唐宗', '宋祖', '唐宗')
>>> name.index("唐宗")
1