python 中的 yh = [ [ ] ] * num 是什么意思
what is the meaning of yh = [ [ ] ] * num in python
python中的yh = [ [ ] ] * num
是什么意思。
并列在列表中?
num = 3 yh = [ [[]],[[]],[[]] ] 是什么意思?
下面是计算帕斯卡三角形的完整代码。
def main():
num = int(input('Number of rows: '))
yh = [[]] * num
for row in range(len(yh)):
yh[row] = [None] * (row + 1)
for col in range(len(yh[row])):
if col == 0 or col == row:
yh[row][col] = 1
else:
yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1]
print(yh[row][col], end='\t')
print()
if __name__ == '__main__':
main()
[[]]
是一个包含单个空列表的列表。
List multiplication 创建一个新列表,其中包含重复该次数的相同元素。因此 [[]] * num
将创建一个长度为 num
的列表,其中每个元素都是相同的空列表。这通常不太可能是您想要的 - 因为所有元素都引用 same 列表,您对其应用的任何更改都会在所有地方看到。在此示例中,这无关紧要 - 代码永远不会访问这些项目。您可以改为 [None] * num
,代码仍然有效。
有关此处危险的示例,请考虑以下示例:
>>> sequence = [[]] * 3
>>> print(sequence)
[[], [], []]
>>> sequence[0].append(77)
>>> print(sequence)
[[77], [77], [77]]
这与您所做的大致相同:
>>> empty = []
>>> sequence = [empty, empty, empty]
>>> print(sequence)
[[], [], []]
>>> empty.append(33)
>>> print(sequence)
[[33], [33], [33]]
python中的yh = [ [ ] ] * num
是什么意思。
并列在列表中?
num = 3 yh = [ [[]],[[]],[[]] ] 是什么意思?
下面是计算帕斯卡三角形的完整代码。
def main():
num = int(input('Number of rows: '))
yh = [[]] * num
for row in range(len(yh)):
yh[row] = [None] * (row + 1)
for col in range(len(yh[row])):
if col == 0 or col == row:
yh[row][col] = 1
else:
yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1]
print(yh[row][col], end='\t')
print()
if __name__ == '__main__':
main()
[[]]
是一个包含单个空列表的列表。
List multiplication 创建一个新列表,其中包含重复该次数的相同元素。因此 [[]] * num
将创建一个长度为 num
的列表,其中每个元素都是相同的空列表。这通常不太可能是您想要的 - 因为所有元素都引用 same 列表,您对其应用的任何更改都会在所有地方看到。在此示例中,这无关紧要 - 代码永远不会访问这些项目。您可以改为 [None] * num
,代码仍然有效。
有关此处危险的示例,请考虑以下示例:
>>> sequence = [[]] * 3
>>> print(sequence)
[[], [], []]
>>> sequence[0].append(77)
>>> print(sequence)
[[77], [77], [77]]
这与您所做的大致相同:
>>> empty = []
>>> sequence = [empty, empty, empty]
>>> print(sequence)
[[], [], []]
>>> empty.append(33)
>>> print(sequence)
[[33], [33], [33]]