您已经知道如何创建列表(甚至是空列表),因此,您可能想以某种方式更改您的列表。列表有很多事情要做,您可以在Python 数据结构文档中阅读它们。在本主题中,我们将仅讨论基本操作。
添加一个元素
该列表是一个动态集合,这意味着您可以添加和删除元素。为了仔细观察,让我们创建一个空的龙列表。
dragons = [] # we do not have dragons yet
接下来是什么?首先想到的当然是向列表中添加新元素。
要将新元素添加到现有列表的末尾,您需要使用该list.append(element)
方法。它只需要一个参数,因此您一次只能将一个元素添加到列表中。
dragons.append('Rudror')
dragons.append('Targiss')
dragons.append('Coporth')
现在您有了三条龙,它们的顺序与您添加它们的方式相同:
print(dragons) # ['Rudror', 'Targiss', 'Coporth']
添加几个元素
存在list.extend(another_list)
将来自另一个可迭代对象的所有元素添加到列表末尾的操作。
numbers = [1, 2, 3, 4, 5]
numbers.extend([10, 20, 30])
print(numbers) # [1, 2, 3, 4, 5, 10, 20, 30]
小心——如果你使用list.append(another_list)
而不是list.extend(another_list)
,它会将整个列表添加为一个元素:
numbers = [1, 2, 3, 4, 5]
numbers.append([10, 20, 30])
print(numbers) # [1, 2, 3, 4, 5, [10, 20, 30]]
或者,要合并两个列表,您可以将一个添加到另一个列表:
numbers_to_four = [0, 1, 2, 3, 4]
numbers_from_five = [5, 6, 7, 8, 9]
numbers = numbers_to_four + numbers_from_five
print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
如果您需要一个包含重复元素的列表,您可以使用重复模式创建一个列表,然后将其乘以任意数字。当您要创建具有相同值的特定长度的列表时,这特别有用:
pattern = ['a', 'b', 'c']
patterns = pattern * 3
print(patterns) # ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
one = [1]
ones = one * 7
print(ones) # [1, 1, 1, 1, 1, 1, 1]
移除元素
与添加元素的相反——删除它们——可以通过三种方式完成。让我们来看看它们。
首先,我们可以使用list.remove(element)
操作。
dragons.remove('Targiss')
print(dragons) # ['Rudror', 'Coporth']
如果我们要删除的元素在列表中出现多次,则仅删除该元素的第一个实例。
dragons = ['Rudror', 'Targiss', 'Coporth', 'Targiss']
dragons.remove('Targiss')
print(dragons) # ['Rudror', 'Coporth', 'Targiss']
其他两种方法是通过索引而不是值本身来删除元素。关键字删除 Python 中的del
任何类型的对象,因此可用于删除列表中的特定元素:
dragons = ['Rudror', 'Targiss', 'Coporth']
del dragons[1]
print(dragons) # ['Rudror', 'Coporth']
最后,还有list.pop()
方法。如果不带参数使用,它将删除并返回列表中的最后一个元素。
dragons = ['Rudror', 'Targiss', 'Coporth']
last_dragon = dragons.pop()
print(last_dragon) # 'Coporth'
print(dragons) # ['Rudror', 'Targiss']
或者,我们可以指定要删除并返回的元素的索引:
dragons = ['Rudror', 'Targiss', 'Coporth']
first_dragon = dragons.pop(0)
print(first_dragon) # 'Rudror'
print(dragons) # ['Targiss', 'Coporth']
在指定位置插入元素
我们将学习如何把新元素添加到列表的末尾。如果我们想在中间添加一个新元素,我们使用list.insert(position, element)
操作。第一个参数是要插入新元素的元素的索引;list.insert(0, element)
将一个元素插入到列表的开头,list.insert(len(list), element)
与list.append(element)相同
这是一个例子:
years = [2016, 2018, 2019]
years.insert(1, 2017) # [2016, 2017, 2018, 2019]
years.insert(0, 2015) # [2015, 2016, 2017, 2018, 2019]
years.insert(len(years), 2020) # [2015, 2016, 2017, 2018, 2019, 2020]
现在,您可以用有用的东西填充任何空列表!
列表中的成员资格测试
另一件非常有用的事情是检查列表中是否存在项目。它可以通过使用in
和not in
运算符简单地完成:
catalog = ['yogurt', 'apples', 'oranges', 'bananas', 'milk', 'cheese']
print('bananas' in catalog) # True
product = 'lemon'
print(product in catalog) # False
print(product not in catalog) # True
搜索特定元素
有时,只知道指定元素在列表中是不够的;我们可能想获得更多关于它的信息——元素在列表中出现了多少次以及在哪个位置。
该方法count()
可以帮助获取存在的数量:
grades = [10, 5, 7, 9, 5, 10, 9]
print(grades.count(5)) # 2
我们可以使用该方法index()
来获取元素的位置。它查找列表中第一次出现 的元素的索引:
print(grades.index(7)) # 2
print(grades.index(10)) # 0
我们还可以指定搜索的间隔:list.index(element, start, end)
print(grades.index(9, 2, 5)) # 3
# if we don't specify the end of the interval, it automatically equals the end of the list
print(grades.index(10, 1)) # 5
注意——end
索引不包含在区间中。
如果我们要查找的元素不在列表中,该方法将导致错误:
print(grades.index(8)) # ValueError: 8 is not in list
我们对列表的基本操作的讨论已经结束。如果您需要更多信息,请查看Python 数据结构文档。
概括
总而言之,在本主题中,我们学会了:
append()
用;添加一个元素extend()
用;添加几个元素remove()
用;删除元素insert()
用;在指定位置插入一个元素in
使用and运算符检查元素是否在列表中not in
;- 用 ;计算一个元素在列表中出现的次数
count()
; - 使用 获取列表中元素的位置
index()
。
我们现在也知道,由于列表是动态集合,因此可以更改。无需不断创建新列表,这有利于程序的内存和性能。