[英]Understanding List Comprehensions in terms of Loops in Python [duplicate]
这个问题已经在这里有了答案:
这里是非常新的Python学习者-请保持温柔。 我在使用Python中的列表理解概念时遇到了一些问题,因此我试图用for循环将列表理解代码等同起来。
给了我一个问题,其中有两个列表:一个是值列表,第二个是索引列表。 工作是使用索引列表从值列表中提取那些列以创建较短的列表。 因此,例如,如果列表为:
my_table = ['1', '2', '3', '4']
['5', '6', '7', '8']
['-2', '-3', '-4', '-5']
col_indices = [0, 2]
我们想要:
Output = ['1', '3']
['5', '7']
['-2', '-4']
因此,我之前已经在Stack Overflow上看到过这篇文章,并且我知道一种使用列表理解的方法如下:
answer = []
for row in my_table:
reduced_row = [row[idx] for idx in col_indices]
answer.append(reduced_row)
return answer
老实说,我有点理解,但并不完全。 为了更好地理解我,我尝试编写一些嵌套循环来获得相同的结果,但是意识到我目前尚无法很好地做到这一点。
最初,我尝试了以下方法:
col_list = []
for row in my_table:
for idx in col_indices:
new = [row[idx]]
col_list.append(new)
return col_list
但是我知道这是错误的,因为它只是将值附加到第一列。 简而言之,我知道列表理解是从这样的索引中拉出列的更有效的方法,但是此代码是为我提供的,并且我不确定我是否可以凭目前的理解水平自行编写。 为了更好地解析列表理解的想法,我试图找出一种仅可以使用循环来完成的方法,但我还没有找到一种方法。 有人可以帮我解决这个问题,以便希望我能更好地掌握此代码的工作方式吗?
您需要在内部循环开始之前创建一个临时list
,然后填充它:
for row in my_table:
new = []
for idx in col_indices:
new.append(row[idx])
col_list.append(new)
基本上,大多数列表理解都可以转换为这种模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.