python - 嵌套括号空循环解释

标签 python

下面的代码执行后x的值是多少?

x = []
for i in range(3):
    x = [x + x]

A.[[[[]]]].
B.[[[],[]]].
C.[[[[],[]],[[],[]]]].
D.[[],[],[],[],[],[]]

答案是c,有人可以解释为什么会这样吗?我理解 2/3 迭代,但不明白它是如何从第 1 次到第 2 次的,比如为什么它没有变成 [[],[]]

最佳答案

为了表达清晰,我使用了额外的空格。

第一次运行:

x + x = [] + [] = []
空列表+空列表是另一个空列表

所以 [x + x] = [ [] ]
注意! [[]] 不是一个空列表,它是一个包含空列表的列表

第二次运行:

x + x = [[]] + [[]] = [[], []]
所以 [x + x] = [ [[], []] ]

第三次运行:

x + x = [[[], []]] + [[[], []]] = [[[], []]], [[[], []]] ]

所以 [x + x] = [[[[[], []]], [[[], []]]] ]

关于python - 嵌套括号空循环解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40167885/

相关文章:

python - 如何将注释放在绘图甘特图之外?

python - 将 pandas 数据框按列分成两部分

python - Django - 使用 mongoengine DB 进行身份验证

python - 使用 scapy 生成 LACP 流量

Python:在循环中将元素添加到numpy数组的第二轴

python - Numba 中的乘法函数比 CPython 慢

python - 计算 CNTK 中静态轴的累积和

python - scikit-learn 矢量化词汇表,多个术语映射到同一索引

python - nosetest 的设置方法。 (测试类)

python - 检查第二列的条件后如何删除某些值?