有什么办法可以访问嵌套列表项吗?如何访问python中的嵌套列表项而不创建新列表?
# Here a is the nested list
a = [1, 2, [3,4]]
a[0] == 1
a[1] == 2
a[2] == [3,4]
# k is the new list
k = a[2]
k[0] == 3
k[1] == 4
有什么办法可以访问嵌套列表项吗?如何访问python中的嵌套列表项而不创建新列表?
# Here a is the nested list
a = [1, 2, [3,4]]
a[0] == 1
a[1] == 2
a[2] == [3,4]
# k is the new list
k = a[2]
k[0] == 3
k[1] == 4
你说而无需创建一个新的列表
我想解释一下有关你一下。通过声明b=a[2]
,你绝对不会创建一个新列表。在你的口译员看看这个。
>>> a = [1,2,[3,4]]
>>> b = a[2]
>>> hex(id(a[2]))
'0x7f1432fcd9c8'
>>> hex(id(b))
'0x7f1432fcd9c8'
十六进制(ID(your_variable))仅返回变量的地址。
'0x7f1432fcd9c8'
是a[2]
和b
的地址。你有没有注意到它们两个都是一样的?
>>> b=a[:]
>>> hex(id(a))
'0x7f1431850608'
>>> hex(id(b))
'0x7f1432fb9808'
b=a[:]
这只创建一个新的副本。注意地址是如何不同的。 但请看下面这个。
>>> a
[1, 2, [3, 4]]
>>> b=a
>>> hex(id(a))
'0x7f1431850608'
>>> hex(id(b))
'0x7f1431850608'
相同的地址。这是什么意思 ?这意味着在Python中只有引用(即将值的内存地址分配给变量,所以请记住不要忘记这一点。另外
要访问嵌套循环中的元素,请使用下标。
>>> a = [1,2,[3,4],[[9,9],[8,8]]]
>>> a[1]
2
>>> a[2]
[3, 4]
>>> a[2][0]
3
>>> a[3][1]
[8, 8]
>>> a[3][1][0]
8
访问这种方式在O(1)时间这样做它是最快的方法不可能性的元件。
您可以通过提供两个标,这样的访问:
a = [1, 2, [3,4]]
a[2][0] == 3
a[2][1] == 4
列表在Python从0索引,而不是1
改为这样做。
# Here a is the nested list
a = [1, 2, [3,4]]
a[0] == 1
a[1] == 2
a[2] == [3,4]
# k is the new list
k = a[2]
k[0] == 3
k[1] == 4
您也可以使用以下语法访问嵌套表:
a[2][0] # => 3
a[2][1] # => 2
当你关注似乎是,你是一个新的列表:别担心,你不是。
后
k = a[2]
两个k
和a[2]
指向同一个列表。没有新创建。
您可以轻松验证通过改变k[0]
到的东西比元素不同3
它已经在那个位置:
k[0] = 5
然后
print(a)
这给
[1, 2, [5, 4]]
如果你想创建一个新的列表,你将不得不e xplicitly这样做:
k = a[2][:]
什么*确切*你想要做什么?你只是想访问列表中的[3,4]部分?它位于列表的“2”位置,所以'a [2]'会让你成为列表的一部分。如果你需要从那里访问列表中的元素,那么:'a [2] [0]'会让你第一个,'a [2] [1]'会让你第二个。 – idjaw