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)

你好男人。我刚刚有一个关于元组的问题,因为我是python的新手。

  1. 为什么print(alist.pop(1).extend(t2))在执行时给出NONE ?

  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-为什么print(一个列表)在末尾打印['Hello', (1, 2, [3, 4], 5, 6)] ?是因为在前面的句子中集合的东西,比如Hello是list吗?

  1. list.extend扩展列表(参见文档:http://docs.python.org/2/tutorial/datastructures.html),因此返回none。与扩展列表中的新变量不同,包含新项目的列表仍然称为alist

  2. 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附加到实际的列表中,然后打印出来。

我试着回答你的前两个问题:

  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,它被打印出来。由于wilma子列表(包括其扩展)从列表中删除,alist现在是["Barney", ("A","B","Hello")]

所以简单地回答你的问题:

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