开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情
书接上文
追加和插入新的列表项
您希望对列表执行的最常见操作之一是向其中添加新数据。如果我们已经创建了一个列表,我们可以使用append提到的方法附加数据,或者insert在某个位置插入项目:
myList = [ "inside", "a", "list" ]
myList.append("friend")
myList.insert(2, "new")
print(myList)
# ['inside', 'a', 'new', 'list', 'friend']
您还可以使用以下方式添加到列表+=:
myList = [ "inside", "a", "list" ]
myList += "friend" print(myList)
# ['inside', 'a', 'list', 'friend']
或者,如果您有两个列表,您可以使用以下方法将第二个列表添加到第一个列表中extend:
myList = [ "some", "list" ]
otherList = [ "other", "list" ]
myList.extend(otherList)
print(myList)
# ['some', 'list', 'other', 'list']
删除列表和列表内容
将所有内容添加到列表后,您同样会想做的一件常见事情是删除项目。您可以删除remove或clear删除整个列表:
myList = [ "inside", "a", "list" ]
myList.remove("inside")
print(myList)
# ['a', 'new']
myList.clear()
print(myList)
# returns []
在 Python 中反转列表
在某些情况下,您还需要反转列表。Python 对此有一个内置方法,因此无需定义您自己的方法:
myList = [ "inside", "a", "list" ]
myList.reverse()
print(myList)
# ['list', 'a', 'inside']
复制清单
在 Python 中,我们使用==按值is比较和按引用比较。我们可以用来copy()为列表创建新的引用。这将使内存中的新参考点指向相同的值。下面,myList和otherList的值相等,但现在它们的引用不同,所以myList is otherList返回 false:
myList = [ "a", "list" ]
otherList = myList.copy()
print(myList == otherList)
# True
print(myList is otherList)
# False
这也可以写成myList[:], 如果你想避免使用该copy()方法:
myList = [ "a", "list" ]
otherList = myList[:]
print(myList == otherList)
# True
print(myList is otherList)
# False
在 Python 中对列表进行排序
使用该函数可以很容易地按升序对列表进行排序sort,并且所有项目都属于同一类型:
myList = [ "a", "c", "e", "b", "f", "d", "g", "z", "w", "x" ]
myNumberList = [ 1, 3, 5, 2, 7, 4, 6 ]
myList.sort()
myNumberList.sort()
print(myList)
# ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'w', 'x', 'z']
print(myNumberList)
# [1, 2, 3, 4, 5, 6, 7]
如果您尝试对列表包含不同类型(例如整数和字符串)的位置进行排序,您最终会收到错误消息。如果你想根据列表的另一个特征对列表进行排序,你可以定义它的key, 和reverse参数:
- key给我们一个数字,用于比较列表内容
- reverse如果设置为 true 将颠倒顺序。
例如,要将所有值放在a开头,我们可以尝试这样的事情:
def isA(letter):
if(letter == "a"):
return 1
else:
return 0
myList = [ "a", "c", "a", 5, "f", "a", 2, "z", "a", "x" ]
myList.sort(key=isA, reverse=True)
print(myList)
# ['a', 'a', 'a', 'a', 'c', 5, 'f', 2, 'z', 'x']
在这里,我们定义了一个函数isA,它将列表中的每个项目作为它的第一个参数 ( letter)。如果字母是a,则返回 1,否则返回 0。然后我们使用reverse=True参数反转列表,以获取a开头的所有 s。
列表最适合用作数据堆栈!
由于列表是有序的,它们最适合用作堆栈,这意味着从列表末尾添加和删除项目非常快,而从开头添加或删除项目则有点慢。这意味着建议在可能的情况下使用pop和append,因为这在大型数据集上比列表上的其他方法要快得多。