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)
你好。我对元组有一个qs,因为我是python的新手。
为什么print(alist.pop(1).extend(t2))
执行无效?
为什么下面的print(a list)
给出了['Barney', ('A', 'B', 'Hello')]
而没有在列表中打开元组,因为使用的函数是extend而不是追加?
alist=["Hello"]
t1=(1,2,[3,4],5,6)
t1[2].append(alist)
print(t1)
t1[2].pop().append(t1)
print(a list)
qs-为什么打印(列表)到最后打印['Hello', (1, 2, [3, 4], 5, 6)]
?是因为前一句中汇集的内容,即Hello是alist?
答案 0 :(得分:4)
list.extend
扩展了列表(请参阅文档:http://docs.python.org/2/tutorial/datastructures.html),因此不返回任何内容。使用新项目的新列表不是包含扩展列表的新变量,而是名为alist
alist prints ['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')]
至于第三,这应该是你期望的行为。首先,您从hello
弹出alist
,然后将所有t1
追加到您刚刚弹出的内容,即hello
。所以,['你好',(1,2,[3,4],5,6)]应该是你期望得到的。你有没有期待不同的东西?
print(alist)
打印['Hello', (1, 2, [3, 4], 5, 6)]
,因为当您运行t1[2].pop()
时,您获得的是特别是alist的引用,而不是任意列表元素。然后,append(t1)
将t1
追加到实际的列表中,然后打印出来。
答案 1 :(得分:1)
我会尝试回答你的前两个问题:
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)
答案 2 :(得分:0)
让我们看看你的代码在这里做了什么:
在第三行之后,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