gpt4 book ai didi

Python 迭代器中的反向列表

转载 作者:行者123 更新时间:2023-11-30 23:32:50 25 4
gpt4 key购买 nike

我希望从嵌套列表的列表中创建两个字典:

M = {index of list: list}

N = {index of list: reversed list}

示例:

对于初学者,我有以下列表:

L =  [[20, 56], [23, 24], [23, 12], [22, 21], [26, 48], [26, 24]]

所以最终结果是:

M = {0: [56, 20], 1: [24, 23], 2: [12, 23], 3: [21, 22], 4: [48, 26], 5: [24, 26]}
N = {0: [20, 56], 1: [23, 24], 2: [23, 12], 3: [22, 21], 4: [26, 48], 5: [26, 24]}

我已经尝试过:

M = {}
N = {}
for index, pair in enumerate(L):
M[index] = pair
N[index] = pair.reverse()

但结果是:

M = {0: [56, 20], 1: [24, 23], 2: [12, 23], 3: [21, 22], 4: [48, 26], 5: [24, 26]}
N = {0: [56, 20], 1: [24, 23], 2: [12, 23], 3: [21, 22], 4: [48, 26], 5: [24, 26]}

我已经通过这样做解决了这个问题:

N[index] = pair[::-1]

但是有人可以告诉我为什么会发生这种情况吗?

最佳答案

list.reverse 是一个就地操作,因为两个字典中的键都指向同一个对象,因此所有引用都会受到影响。

>>> a = [1, 2, 3]
>>> b = a
>>> a.reverse()
>>> a
[3, 2, 1]
>>> b
[3, 2, 1]

要获取列表的新反向副本,您可以使用 a[::-1]list(reversed(a))

>>> a = [1, 2, 3]
>>> b = a[::-1]
>>> b is a
False
>>> b = list(reversed(a))
>>> b is a
False

但是如果你想要一个反向列表,如果你想要一个迭代器,a[::-1]应该总是优先于list(reversed(a))对于反转(a)

关于Python 迭代器中的反向列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19200001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com