【问题标题】:How can I loop through a list in a nested list using python list comprehension?如何使用 python 列表理解遍历嵌套列表中的列表?
【发布时间】:2023-02-07 13:32:17
【问题描述】:

我正在尝试在 Python 中练习使用列表理解。

我给自己设定了一个任务,根据上面带有 5 的多米诺骨牌制作一个列表。也就是说,结果应该是:

[[5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6]]

我正在学习一门课程,但到目前为止的示例仅展示了如何使用范围创建这些类型的带有升序数字的嵌套列表,例如 [[1,2,3], [1,2,3]]

我试过这段代码:

x = [val for val in range(0,7)]

Fives = [[5,x] for pieces in range(0,7)] 
print(Fives)

但是我得到了错误的结果:

[[5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]], [5, [0, 1, 2, 3, 4, 5, 6]]]

出了什么问题,我该如何解决?

【问题讨论】:

  • 代码显示 [[5,x] for pieces in range(0,7)] 的地方,您认为这是什么意思?特别是:当您选择名称pieces 时,您是否打算在其他地方使用它?它在哪里写着[5, x],你认为x来自哪里?在上一行,它写着x = [val for val in range(0,7)]这会有所帮助吗用于创建[[5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6]] 列表的任务?如果是这样,如何?你在那里的基本思维过程是什么?
  • 无论如何,请阅读How to Ask并注意这是不是论坛.我编辑了问题以显示在此处提问的正确风格。

标签: python list list-comprehension


【解决方案1】:

你可能在这里有一个XY Problem

为了创建所有可能的多米诺骨牌,您可以使用itertools.permutations()

>>> list(permutations(range(6+1), 2))
[(0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (1, 0), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 0), (2, 1), (2, 3), (2, 4), (2, 5), (2, 6), (3, 0), (3, 1), (3, 2), (3, 4), (3, 5), (3, 6), (4, 0), (4, 1), (4, 2), (4, 3), (4, 5), (4, 6), (5, 0), (5, 1), (5, 2), (5, 3), (5, 4), (5, 6), (6, 0), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5)]

如果你必须遍历内部列表,而不是迭代超过

values = list(range(7))  # 0,1,2,3,4,5,6
results = []
for val_upper in range(7):  # or your original list  
    for val_lower in values:
        results.append([val_upper, val_lower])

【讨论】:

  • 我一点也不清楚 OP 实际上想要所有的多米诺骨牌。从上下文来看,目标似乎也很清楚具体而明确地练习使用列表理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-11
  • 1970-01-01
  • 2019-08-22
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多