我最近在練習考試中遇到了一個串列理解問題,雖然我有正確的答案,但我不明白這些答案是如何有效的。問題:以下代碼段將發送多少顆星 (*) 到控制臺?
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 <2,滿足條件。但是,答案是 3。我在 python 導師上驗證了 list = [0,0,1]。但我不明白為什么。有人可以解釋一下嗎?
uj5u.com熱心網友回復:
考慮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
uj5u.com熱心網友回復:
實際上它會列印“***”星。第二次迭代中一顆星,第三次迭代中兩顆星。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/414407.html
標籤:
上一篇:如何將嵌套集轉換為串列?
下一篇:如何在顫動的串列中獲取專案的索引
