繁体   English   中英

元组python pop和append

[英]tuples python pop and append

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的新手。

  1. 为什么print(alist.pop(1).extend(t2))在执行时没有显示?

  2. 为什么下面的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-为什么在最后打印['Hello', (1, 2, [3, 4], 5, 6)]中打印(列表)? 是因为上一句话中所汇集的东西,即Hello是alist吗?

  1. list.extend在适当的位置扩展列表(请参阅docs: http : list.extend ),因此不返回任何内容。 与扩展列表中没有新变量相比,包含新项的列表仍称为alist

  2. alist打印['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() ,得到的是一个引用尤其是列表,而不是任意列表元素。 因此, append(t1)t1附加到实际的列表中,然后进行打印。

我将尝试回答您的前2个问题:

  1. alist.pop(1).extend(t2)工作方式如下:

    -> alist.pop(1)返回["Wilma"]alist变为['Barney', ('A', 'B', 'Hello')]

    - > ["Wilma"].extend(t2)返回None并且仅延伸所述临时列表,而无需修改alist

  2. 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 ,将被打印出来。 而且,由于威尔玛-子列表(包括其扩展名)得到了从列表中删除, alist现在是["Barney", ("A","B","Hello")]

因此,简短地回答您的问题:

  1. 因为extend的返回值为None
  2. 因为extend应用于pop的返回值,而不是alist ,但该元组在代码的前面被appendalist

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM