例如:
re=[]
for i in range(5):
#fill code here
- 1.)如果我们这样做"
re.append(i)
, re为[0,1,2,3,4]
- 2.)如果我们这样做;
re.append([i])
", re将是[[0],[1],[2],[3],[4]]
- 3.)如果我们这样做;
re+=[i]
",将是[0,1,2,3,4]
- 4.)如果我们这样做;
re+=[i],
",是的,后面加逗号,re将是[[0],[1],[2],[3],[4]]
我的问题是,逗号在#4中的作用是什么?我一直认为后面的逗号会使它们变成元组,但它们显然是列表。所以我也尝试了"re+=i,
",和re将仍然是列表:[0,1,2,3,4]
然后我又试了一次:
re=[]
re=re+[1]
和现在的re=[1]
re=[]
re=re+[1],
然后是re=([1],)
, re现在是一个元组,不再是一个列表
最后是
re=[]
for i in range(5):
re=re+[i]
现在是[0,1,2,3,4]
但是如果我把它改成:
re=[]
for i in range(5):
re=re+[i],
现在我得到:TypeError: can only concatenante tuple (not "list") to tuple
谁能给我解释一下这是怎么回事?我试着在谷歌上搜索答案,但似乎没有人谈论这个
[i],
等价于([i],)
,它是一个只有一个元素的元组,而这个元素就是列表[i]
。
当您使用+=
将任何序列连接到列表时,它会遍历该序列并将每个元素附加到列表中。所以
re += [i],
等价于
for x in ([i],):
re.append(x)
由于([i],)
中只有一个元素,这进一步相当于:
re.append([i])
与#2中的相同,所以得到相同的结果。