用Python中的循环理解列表理解

2024-04-24 23:01:37 发布

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

非常新的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']

所以我以前看过这篇关于堆栈溢出的文章,我知道一个列表理解的方法如下:

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

但我知道这是错误的,因为它只是将ever值附加到第一列。 简言之,我知道列表理解是从这样的索引中提取列的更有效的方法,但这段代码是为我提供的,我不确定我是否可以用我目前的理解水平自己编写它。为了更好地解析列表理解的概念,我试图找出一种方法,这种方法只能使用循环来实现,但我还没有找到一种方法来实现。有人能帮我解决这个问题吗?希望我能更好地理解这个代码的工作原理?你知道吗


Tags: 方法代码answerin概念列表formy
1条回答
网友
1楼 · 发布于 2024-04-24 23:01:37

您需要在内部循环开始之前创建一个临时的list,然后填充它:

for row in my_table:
    new = []
    for idx in col_indices:
        new.append(row[idx])
    col_list.append(new)    

基本上,大多数列表理解都可以用这种模式转换为循环。你知道吗

相关问题 更多 >