簡體   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