元组python pop并追加

时间:2014-03-20 12:43:52

标签: python tuples extend

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')]而没有在列表中打开元组,因为使用的函数是extend而不是追加?

    alist=["Hello"] 
    t1=(1,2,[3,4],5,6)
    t1[2].append(alist) 
    print(t1) 
    t1[2].pop().append(t1) 
    print(a list)
    
  3. qs-为什么打印(列表)到最后打印['Hello', (1, 2, [3, 4], 5, 6)]?是因为前一句中汇集的内容,即Hello是alist?

3 个答案:

答案 0 :(得分:4)

  1. list.extend扩展了列表(请参阅文档:http://docs.python.org/2/tutorial/datastructures.html),因此不返回任何内容。使用新项目的新列表不是包含扩展列表的新变量,而是名为alist

  2. alist prints ['Barney', ('A', 'B', 'Hello')],因为这就是你要求它做的事情。 一步一步,

  3. 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)

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

  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)

答案 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")]

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

  1. 因为extend的返回值为None
  2. 由于extend已应用于pop的返回值,而未应用于alist,但代码中的元组append已添加至alist