【问题标题】:Python List comprehension PCEP questionsPython列表理解PCEP问题
【发布时间】:2022-01-17 18:06:31
【问题描述】:

我最近在练习考试中遇到了一个列表理解问题,虽然我有正确的答案,但我不明白这些答案是如何有效的。 问题:以下 sn-p 将发送多少颗星 (*) 到控制台?

lst = [[c for c in range(r)] for r in range(3)]
   for x in lst:
      for y in x:
         if y < 2:
            print('*', end='')

我的回答是 2 星。我的想法是 lst = [0,1,2]。 x 和 lst 应该是相同数量的元素 - 0,1,2。只有 0, 1

【问题讨论】:

  • 正确答案是零...此代码将生成IndentationError...但认真理解这些内容的最佳方法是打印各个部分。尝试在for x in lst: 之后添加print(x)。或者打印lst,你会发现它不是 [0,1,2]
  • 谢谢,对缩进错误表示歉意 - 我发布后看到了,但很高兴为其他人指出。

标签: python list list-comprehension


【解决方案1】:

考虑 lst = [[c for c in range(r)] for r in range(3)]

第一次迭代:

r = 0 => range(0) -> doesn't print anything

第二次迭代:

r = 1 => range(1) -> 0 -> prints * once

第三次迭代

r = 2 => range(2) -> 0,1 -> prints * twice

【讨论】:

  • 啊啊,这对我帮助很大。我现在明白了它的一个输出馈入另一个 - 所以对于 r 的每个值,然后你得到 c 值的 at 值的范围,这反过来又给出了 lst。非常感谢先生!
【解决方案2】:

确实会打印“***”星。第二次迭代中一颗星,第三次迭代中两颗星。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2013-06-03
    • 2016-02-04
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多