一、列表基本操作
列表(List)是一种Python基本数据类型,是一种有序、可变的数据类型。
列表使用方括号[]来表示,元素之间使用逗号,分隔。
列表中的元素可以是不同的数据类型,例如整数、浮点数、字符串等。
列表中的元素可重复。
列表支持索引和切片操作。
1、创建列表
创建列表的方式有以下几种:
1. 使用方括号 []:可以使用方括号来创建一个空列表,或者在方括号中用逗号分隔多个元素来创建一个包含多个元素的列表。示例:
- 空列表:`my_list = []`
- 包含多个元素的列表:`my_list = [1, 2, 3, 4, 5]`
2. 使用list()函数:可以使用`list()`函数将其他可迭代对象(如字符串、元组等)转换为列表。示例:
- 将字符串转换为列表:`my_list = list("hello")`,结果为`['h', 'e', 'l', 'l', 'o']`
- 将元组转换为列表:`my_list = list((1, 2, 3, 4, 5))`
- 将可迭代对象转换成列表:`my_list = list(range(1, 5))`
3. 列表推导式:列表推导式是一种简洁的创建列表的方式,可以通过一行代码生成一个列表。它的基本语法是在方括号中使用表达式和循环来生成列表元素。示例:
- 生成一个包含1到5的列表:`my_list = [x for x in range(1, 6)]`
关于列表推导式详见:python基础 — 推导式
2、列表的索引和切片操作
列表是一种有序序列,支持索引和切片操作。每个元素在列表中都有一个对应的索引,列表的索引下标如下图所示:
列表的索引从0开始,因此第一个元素的索引为0,第二个元素的索引为1,以此类推。可以使用正整数索引来访问列表中的特定元素,例如,my_list[0]表示获取列表中的第一个元素。
除了使用单个索引来访问单个元素外,还可以使用切片语法来获取子列表。切片语法使用方括号和冒号([start:end])表示,其中start表示切片的起始索引(包含),end表示切片的结束索引(不包含)。
下面是一些示例来说明列表索引切片操作:
1. 索引操作
通过索引可以获取列表中指定位置的元素。索引从0开始并依次递增。语法格式如下:
list[index]
其中,index是元素的索引。
获取单个元素,示例如下:
my_list = [1, 2, 3, 4, 5]
element = my_list[2] # 获取索引为2的元素,结果为3
2. 切片操作
通过切片可以获取列表中一段或多段的连续元素组成的新列表。语法格式如下:
list[start_index : stop_index : step]
其中,start_index是开始切片的索引,stop_index是停止切片的索引(不包含该索引对应的元素),step是切片的步长(默认为1)。
注意,切片操作不会影响原列表,而是返回一个新的列表*****注意左开右闭。
获取子列表,示例如下:
my_list = [1, 2, 3, 4, 5]
sub_list = my_list[1:4] # 获取索引1到3的子列表,结果为[2, 3, 4]
切片操作中的start和end索引都是可选的。如果不指定start索引,默认为0(列表的开头),如果不指定end索引,默认为列表的长度(列表的末尾)。
切片操作还可以使用负数索引,表示从列表末尾开始计数。例如,`my_list[-1]`表示获取列表中的最后一个元素。
另外,切片操作还可以指定步长(step),以控制提取元素的间隔。例如,`my_list[::2]`表示从列表的开头到末尾,每隔一个元素获取一个元素,结果为[1, 3, 5]。
3、访问列表中的元素
访问列表中的元素可以通过索引操作或切片操作来实现。索引操作用于获取单个元素,而切片操作则用于获取子列表。
如果你想获取列表中的单个元素,可以使用方括号和元素的索引。例如,`my_list[2]`表示获取列表 `my_list` 中索引为 2 的元素。
如果你想获取列表中的多个连续元素,可以使用切片操作。切片操作使用方括号、起始索引和结束索引,并使用冒号分隔。例如,`my_list[1:4]` 表示获取列表 `my_list` 中索引从 1 到 3 的元素(不包括索引 4)。
如果你想获取列表中的每隔一定间隔的元素,可以在切片操作中指定步长。步长表示提取元素的间隔,默认为 1。例如,`my_list[::2]` 表示从列表的开头到末尾,每隔一个元素获取一个元素。
4、向列表中添加元素
向列表中添加元素可以使用列表的 `append()` 方法或者使用加法操作符 `+`。
1. 使用 `append()` 方法:用于在列表的末尾添加一个元素。例如,如果你有一个列表 `my_list`,你可以使用以下代码向列表中添加一个元素:
my_list = [1, 2, 3]
my_list.append(4)
运行后,`my_list` 将变为 `[1, 2, 3, 4]`,元素 4 被添加到了列表的末尾。
2. 使用加法操作符 `+`:用于连接两个列表,可以通过将一个单独的元素或另一个列表添加到原始列表中。例如,如果你有两个列表 `list1` 和 `list2`,你可以使用以下代码将 `list2` 中的元素添加到 `list1` 的末尾:
list1 = [1, 2, 3]
list2 = [4, 5]
list1 += list2
运行后,`list1` 将变为 `[1, 2, 3, 4, 5]`,`list2` 中的元素被添加到了 `list1` 的末尾。
5、删除列表中的元素
删除列表中的元素可以使用多种方法,包括使用 `del` 语句、`remove()` 方法和切片操作。
1. 使用 `del` 语句:通过索引删除列表中的元素。例如,如果你有一个列表 `my_list`,你可以使用以下代码删除索引为 2 的元素:
my_list = [1, 2, 3, 4]
del my_list[2]
运行后,`my_list` 将变为 `[1, 2, 4]`,索引为 2 的元素 3 被删除了。
2. 使用 `remove()` 方法:用于删除列表中第一个匹配指定值的元素。例如,如果你有一个列表 `my_list`,你可以使用以下代码删除值为 3 的元素:
my_list = [1, 2, 3, 4]
my_list.remove(3)
运行后,`my_list` 将变为 `[1, 2, 4]`,值为 3 的元素被删除了。
3. 使用切片操作:切片操作也可以用于删除列表中的元素。通过将需要删除的元素切片替换为空列表 `[]`,可以删除指定的元素。例如,如果你有一个列表 `my_list`,你可以使用以下代码删除索引为 1 的元素:
my_list = [1, 2, 3, 4]
my_list[1:2] = []
运行后,`my_list` 将变为 `[1, 3, 4]`,索引为 1 的元素 2 被删除了。
6、清空列表中的元素
`list.clear()` 是一个列表方法,用于清空列表中的所有元素。当调用 `clear()` 方法时,列表将变为空列表,即不包含任何元素。
my_list = [1, 2, 3, 4]
my_list.clear()
运行后,`my_list` 将变为 `[]`,即空列表。所有先前存在于列表中的元素都被清空了。
如果你想保留列表对象,但删除其中的元素,可以使用 `clear()` 方法。记住,在调用 `clear()` 方法后,列表对象本身将保持不变,只是其中的元素被清空了。
二、列表属性方法
可以使用dir(list)函数,打印输出列表list的所有属性和方法。
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
根据每种方法的用途可以分为如下几类:
增:'append', 'extend', 'insert',
删:'pop', 'remove', 'clear',
改:无(直接使用索引,切片赋值)
查:'index',
排序:'sort', 'reverse',
其它:'copy','count'
1、向列表中添加元素(append、insert、extend)
在 Python 中,有多种方法可以向列表中添加新元素。以下是其中的几种常见方法:
(1)append() 方法:这个方法可以在列表末尾添加一个元素。
示例代码:
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 输出 [1, 2, 3, 4]
(2)insert() 方法:这个方法可以在列表的指定位置插入一个元素。
示例代码:
my_list = [1, 2, 3]
my_list.insert(1, "a")
print(my_list) # 输出 [1, 'a', 2, 3]
(3)extend() 方法:这个方法可以将一个列表中的所有元素添加到另一个列表中。
示例代码:
my_list = [1, 2, 3]
new_elements = [4, 5]
my_list.extend(new_elements)
print(my_list) # 输出 [1, 2, 3, 4, 5]
2、删除列表中的元素(remove、pop、clear)
在 Python 中,有多种方法可以从列表中删除元素。以下是其中的几种常见方法:
(1)remove() 方法:这个方法可以删除列表中第一个匹配给定值的元素。
示例代码:
my_list = [1, 2, 3, 4, 5]
my_list.remove(3)
print(my_list) # 输出 [1, 2, 4, 5]
(2)pop() 方法:这个方法可以删除列表中指定位置(索引)的元素,并返回该元素的值。如果不指定位置,则默认删除最后一个元素。
示例代码:
my_list = [1, 2, 3, 4, 5]
my_list.pop(2)
print(my_list) # 输出 [1, 2, 4, 5]
my_list.pop()
print(my_list) # 输出 [1, 2, 4]
(3)del 关键字:这个关键字可以删除列表中指定位置的元素或整个列表。
示例代码:
my_list = [1, 2, 3, 4, 5]
del my_list[2]
print(my_list) # 输出 [1, 2, 4]
del my_list
print(my_list) # 报错,因为 my_list 已经被删除了
(4)`clear()`函数:这个函数可以清空列表中的所有元素,让其变成一个空列表。
示例代码:
my_list = [1, 2, 3, 4, 5]
my_list.clear()
print(my_list) # 输出 []
请注意,使用`clear()`函数清除列表中的元素是永久性的,即该列表不再具有任何元素。
3、查找列表中的元素(index)
(1)index()方法,这个方法可以找到列表中的特定元素的索引值。如果该元素存在于列表中,则返回该元素在列表中第一次出现的索引值,否则会抛出 `ValueError` 异常。
实例代码:
fruits = ["apple", "banana", "cherry"]
idx = fruits.index("banana")
print(idx) # 输出 1
如果要查找的元素不在列表中,则会抛出 `ValueError` 异常:
fruits = ["apple", "banana", "cherry"]
idx = fruits.index("orange") # 抛出 ValueError 异常
4、列表中的元素排序(sort、sorted、reverse)
(1)sort方法,这个方法可以对列表中的元素进行排序(默认升序)。
代码实例:
my_list = [2, 3, 1, 5, 4]
my_list.sort()
print(my_list) # 输出 [1, 2, 3, 4, 5]
(2)'sorted()' 函数,这个函数可以创建一个新的排序后的列表,而不修改原始列表。
代码实例:
my_list = [2, 3, 1, 5, 4]
new_list = sorted(my_list)
print(new_list) # 输出 [1, 2, 3, 4, 5]
在这两种情况下,元素都是按升序排列的。如果要按降序排序,则可以使用sort(reverse=True)方法或sorted(numbers, reverse=True)函数。
(3)reverse() 方法,这个方法用于反向列表中的元素。
代码实例:
my_list = [2, 3, 1, 5, 4]
my_list.reverse()
print(my_list) # 输出 [4, 5, 1, 3, 2]
详见:Python内置函数 — sort,sorted,reversed
5、列表的其它方法(copy、count)
(1)copy() 方法,这个方法用于复制一个列表。语法如下:
new_list = old_list.copy()
代码实例:
list1 = ['a', 'b', 'c']
list2 = list1.copy()
print(list2) # ['a', 'b', 'c']
在上述代码中,list2 拷贝了 list1 中的元素,产生了一个新的列表 list2,并且打印输出也可以看到现在 list2 与 list1 相等。如果修改 list2 中的元素,list1 不会受到影响。
Python列表copy() 方法用于返回列表的一个浅拷贝,即复制列表的元素,建立一个新的列表对象。使用 copy() 方法复制的列表和原列表拥有同样的元素,但是当新列表的元素发生改变时,原列表不会发生改变。
(2)count()方法,这个方法可以用来统计某个元素在列表中出现的次数。语法如下:
count = list.count(element)
其中,`element`是要统计的元素,`count`是该元素在列表中出现的次数。
代码实例,统计列表中数字3的出现次数:
nums = [1, 2, 3, 3, 4, 5, 3]
count = nums.count(3)
print(count) # 输出 3
这段代码中,nums列表中数字3出现了3次,所以count的值为3。
reference: