非常新的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
但我知道这是错误的,因为它只是将第一列的值添加到第一列。 简而言之,我知道列表理解是从这样的索引中提取列的更有效方法,但是这段代码是为我提供的,我不确定我是否可以用我目前的理解水平自己编写它。为了更好地解析列表理解的想法,我试图找出一种只能使用循环的方法,但我还没有想出办法。有人可以帮我解决这个问题,希望我能更好地处理这段代码的工作原理吗?
答案 0 :(得分:5)
您需要在内循环开始之前创建一个临时list
,然后填充它:
for row in my_table:
new = []
for idx in col_indices:
new.append(row[idx])
col_list.append(new)
基本上,大多数列表推导都可以用这种模式转换为循环。