【发布时间】:2018-08-23 15:30:57
【问题描述】:
我正在尝试打印列表列表num_list 中所有列表的第一项和最后一项。
num_list = [[1,2,3],[10,20,30],[100,200,300]]
for x in range(0,3):
for y in range(0,1) and range(2,3):
print(num_list[x][y])
但这只是打印3,30,300并跳过1,10和100。
有什么好的方法可以解决这个问题?
【问题讨论】:
-
range(0,1) and range(2,3)这并不像您认为的那样。它只返回range(2,3),因为bool(range(0,1))是True(参见this)。你想要的是for y in [0, 2](我期待)。 -
谢谢@FHTMitchell,为什么 range(0,1) 返回 true?
-
@FHTMitchell 再想一想,如果 range(0,1) 返回 True,那么为什么 range(2,3) 返回 range(2,3) 而不是 True?
-
range(0,1)不返回True,bool(range(0,1))返回True,bool(range(2,3))也是如此,因为bool(sequence)(通常)与len(sequence) > 0相同。a and b与b if a else a相同。这是一个非常基本的 Python 概念。请参阅我之前提供的链接。 -
感谢@FHTMitchell 的评论。当您说 bool(sequence) 通常与 len(sequence) 相同时,这是否意味着字符串“range(0,1)”的长度> 0,它返回 true?对不起,如果我在这方面做得不好!只是想理解。