感谢您花时间回答这个问题。这里我很困惑为什么输出不匹配。
操作1:
target_link_libraries(ify ${catkin_LIBRARIES} libmsc.so libasound.so ${CMAKE_DL_LIBS})
操作2:
x = [[0, 0], [0, 0]]
print(type(x)) # <class 'list'>
print(x) # [[0, 0], [0, 0]]
x[0][0] = 1
print(x) # [[1, 0], [0, 0]]
我的理解是x和y应该是相同的。但看起来他们不是。我在这里缺少什么?
答案 0 :(得分:6)
当你这样做时,你缺少的是:
y = [[0] * 2] * 2
您创建了一个列表[0]
,然后[0, 0]
。调用此列表X.然后,您创建了[X, X]
,其中两个X都指向相同的基础列表。因此,当您修改第一个列表时,第二个列表也会被修改。
为什么不修改第一个列表的第一个元素也会修改每个列表的第二个元素?好吧,那是因为[0] * 2
实际上是两个数字的列表,因为无法修改对0的引用(想象一下,如果你的程序0
意味着什么,那就是恐怖!)