t2=("A","B","Hello")
alist=["Barney",["Wilma"]]
alist.append(t2)
print(alist.pop(1).extend(t2))
print(alist)
print((alist[1][2].upper()))
print(alist)
你好男人。我刚刚有一个关于元组的问题,因为我是python的新手。
为什么
print(alist.pop(1).extend(t2))
在执行时给出NONE ?为什么
print(a list)
下面给出['Barney', ('A', 'B', 'Hello')]
而不是在列表内打开元组,因为使用的函数是扩展而不是追加?alist=["Hello"] t1=(1,2,[3,4],5,6) t1[2].append(alist) print(t1) t1[2].pop().append(t1) print(a list)
qs-为什么print(一个列表)在末尾打印['Hello', (1, 2, [3, 4], 5, 6)]
?是因为在前面的句子中集合的东西,比如Hello是list吗?
-
list.extend
扩展列表(参见文档:http://docs.python.org/2/tutorial/datastructures.html),因此返回none。与扩展列表中的新变量不同,包含新项目的列表仍然称为alist
-
list打印
['Barney', ('A', 'B', 'Hello')]
,因为这是你要求它做的。一步一步,
t2=("A","B","Hello")
alist=["Barney",["Wilma"]]
alist.append(t2) # ['Barney', ['Wilma'], ('A', 'B', 'Hello')]
pop1 = alist.pop(1) # ['Wilma']
extend1 = pop1.extend(t2) #extend1 = None, pop1 = ['Wilma', 'A', 'B', 'Hello']
print(alist.pop(1).extend(t2)) # None
print(alist) #you've popped wilma, so the rest remains: ['Barney', ('A', 'B', 'Hello')]
至于第三点,这应该正是您所期望的行为。首先,从alist
弹出hello
,然后将所有t1
附加到刚刚弹出的内容,即hello
。因此,['Hello',(1,2,[3,4], 5,6)]应该是您期望得到的结果。你有什么不同的期待吗?
print(alist)
在最后一行打印['Hello', (1, 2, [3, 4], 5, 6)]
,因为当你运行t1[2].pop()
时,你得到的是一个对list的引用,而不是一个任意的列表元素。然后,append(t1)
将t1
附加到实际的列表中,然后打印出来。
我试着回答你的前两个问题:
-
alist.pop(1).extend(t2)
是这样工作的:->
alist.pop(1)
返回["Wilma"]
,alist
变为['Barney', ('A', 'B', 'Hello')]
->
["Wilma"].extend(t2)
返回None,只扩展临时列表而不修改alist
-
print(alist)
显示['Barney', ('A', 'B', 'Hello')]
,因为之前你已经执行了alist.append(t2)
让我们看看这里的代码:
第三行之后,alist.append(t2)
, alist
就是["Barney",["Wilma"], ("A","B","Hello")]
。现在您从列表中pop
(删除)["Wilma"]
,并使用元组t2
扩展该列表。该列表将是["Wilma","A","B","Hello"]
,但它没有绑定到任何变量,并且由于extend
是到位的,该操作的结果是None
,它被打印出来。由于wilma子列表(包括其扩展)从列表中删除,alist
现在是["Barney", ("A","B","Hello")]
。
所以简单地回答你的问题:
- 因为
extend
的返回值是None
- 因为
extend
被应用于pop
的返回值,而不是alist
,但是元组在前面的代码中被append
替换为alist
。