【问题标题】:How to use list comprehension for the following code? [duplicate]如何对以下代码使用列表推导? [复制]
【发布时间】:2019-12-31 22:33:17
【问题描述】:

我需要使用列表理解执行以下操作

ans = []
for i in range(0, x):
    l = []
    for j in range(0, y):
        l.append(i*j)
    ans.append(l)

【问题讨论】:

  • 你尝试了什么,有什么不足?
  • 我尝试了以下方法:` ans = [i*j for i in range(0,x) l = [] for j in range(0,y)] ans = [ans[i :i+y] for i in range(0, len(ans), y)] `
  • 您的代码似乎也不错。怎么不行?
  • 您应该在 SO 上搜索您的问题。如果您没有找到匹配项,那么您可以提出问题。
  • @Vinay 抱歉,但我认为您的搜索并不好,因为此链接 stackoverflow.com/questions/3633140/… 清楚地解释了您想要做什么以及答案应该如何。社区可以帮助您找到答案,但如果社区会为您做作业,那对您来说将是非常糟糕的。这样你就什么也学不到了。我想在这里帮助你。我保证如果你尝试自己学习会更好,它会在未来得到回报。很快;)

标签: python python-3.x list


【解决方案1】:

既然你想要单独的列表:

ans = [[i*j for j in range(y)] for i in range(x)]

如果你想让它变平:

ans = [i*j for i in range(x) for j in range(y)]

【讨论】:

  • 是的,我知道列表的扁平化..thanx
  • 您也应该发布您尝试过的内容,以避免那些反对意见。
  • 下次一定会记得这样做的。
【解决方案2】:

这是一个等同于嵌套循环的列表推导:

a = [[i * j for j in range(0, y)] for i in range(0, x)]

【讨论】:

  • 这是完美的答案.. 不知道它是如何被否决的。
  • 我也不确定。最有可能的是,人们对得到答案的糟糕问题感到愤怒(来自更高代表的用户?)。
猜你喜欢
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多