Python 列表的完整指南二

52 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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,因为这在大型数据集上比列表上的其他方法要快得多。