嵌套列表迭代

2024-05-12 17:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中有一些列表,其中嵌套的列表名为otherElem,如下所示:

otherElem=[[list1],[list2],...[list_n]]

我需要的是创建一个新的列表,它将执行一些操作(即j.Mirror是无关的,可以是任何东西),并创建一个新的列表,它将保持以前列表的顺序和格式。我试过这个,但没有成功。我是一个全新的编程人员,很抱歉有错别字(如果有的话)

for i in otherElem:
        for j in i:
            j=j.Mirror(mirPlane)
            newList.Add(j)
        newList2.Add(newList)

Tags: inadd列表for顺序mirror格式list
3条回答

其他答案是对的;列表理解可能是用Python实现这一点的最佳方法。同时,您列出的解决方案的具体问题是,它每次查看内部列表时都需要创建一个新列表。它应该看起来像:

new_list_of_lists = [] 
for old_list in old_list_of_lists:
   new_list = []
   new_list_of_lists.append(new_list)
   for old_item in old_list:
      new_item = transformation(old_item) 
      new_list.append(new_item)

这七行完全等同于更短的嵌套列表理解,因此您可以看到为什么这些理解更可取!你知道吗

它可以通过嵌套列表理解来完成,类似于这样。你知道吗

otherElem=[[1, 2, 3, 4],[5, 6, 7, 8], [9, 10, 11, 12]]

l = [[an_elem * 2 for an_elem in inner_list] for inner_list in otherElem]

print l

结果是

[[2, 4, 6, 8], [10, 12, 14, 16], [18, 20, 22, 24]]

这里,对每个元素的运算是乘以2。在你的例子中,它是j.Mirror(mirPlane),我不知道,它返回什么。你知道吗

内部循环可以很容易地写成一个列表:

[ j.Mirror(mirPlane) for j in i ]

外环也是如此:

[ <inner part here> for i in otherElem ]

把它放在一起,我们得到一个嵌套列表:

newList2 = [
  [ j.Mirror(mirPlane) for j in i ]
  for i in otherElem
]

相关问题 更多 >