Python 3.x 循环列表,同时轻松访问每个元素

Python 3.x 循环列表,同时轻松访问每个元素,python-3.x,list,for-loop,Python 3.x,List,For Loop,我提前道歉,如果之前有人回答过,我不知道该搜索什么 比如说,我想遍历一个列表列表,如下所示: x = [[a, b, c], [a, b, c], ...] 我发现我可以这样做,以便轻松访问该结构中的列表: for [a, b, c] in x: doSomethingToElements(a,b,c) 我想做的是: for [a, b, c] as wholeList in x: doSomethingToElements(a,b,c) do

我提前道歉,如果之前有人回答过,我不知道该搜索什么

比如说,我想遍历一个列表列表,如下所示:

x = [[a, b, c], [a, b, c], ...]
我发现我可以这样做,以便轻松访问该结构中的列表:

for [a, b, c] in x:
        doSomethingToElements(a,b,c)
我想做的是:

for [a, b, c] as wholeList in x:
        doSomethingToElements(a,b,c)
        doSomethingToWholeLists(wholeList)
然而,这种语法是无效的,是否有任何等效的方法来实现它,哪种方法是正确和有效的? 或者我应该按照说明使用
enumerate()

编辑:为了使
enumerate()
工作,我意识到我可以做到:

for idx, [a, b, c] in enumerate(x):
        doSomethingToElements(a,b,c)
        doSomethingToWholeLists(x[idx])
但是请随意发布更优雅的解决方案,或者它是否足够优雅以至于无关紧要?

有两种选择。 第一个是使用
zip
迭代元素和列表,第二个是迭代列表并分配每个值

x = [[1, 2, 3], [4, 5, 6]]
for (a, b, c), z in zip(x, x):
    print(a, b, c, z)

for z in x:
    a, b, c = z
    print(a, b, c, z)

实际上没有任何语法与该建议类似。你最好的选择是:


我猜这只在你通过一个函数时有效,对吗?如果我想在没有函数的情况下当场操作a、b或c,该怎么办?它可以在其他一些上下文中工作,例如
padded_wholeList=[“pre”、*wholeList、“post”]
,但函数调用语法是最常见的用法。如果你想在循环中使用局部变量,只需分配它们:
a,b,c=wholeList
我不确定zip解决方案,但第二个非常简单,我喜欢它。我觉得这是一个足够好的解决方案,非常简单,因此我同意你接受答案。此外,对于任何未来有抱负的开发人员,如果他们遇到这个问题,但不需要使用所有三个
a、b、c
元素,您可以使用
\u
来处理不必要的元素
for wholeList in x:
    doSomethingToElements(*wholeList)
    doSomethingToWholeLists(wholeList)