簡體   English   中英

差異訪問元組和列表的元素

[英]Difference accessing element(s) of tuple and list

為什么在將它作為tuple時訪問t的元素會有這種差異?

>>> t = [('ID','int')]
>>> for r in t:
print r


('ID', 'int')


t = (('ID','int'))
>>> for r in t:
print r


ID
int

我希望這與第一個例子完全一樣! 盡管使用多個元素填充元組,行為也會發生變化。

>>> t = (('ID','int'),('DEF','str'))
>>> for r in t:
print r


('ID', 'int')
('DEF', 'str')
>>> t = [('ID','int'),('DEF','str')]
>>> for r in t:
print r


('ID', 'int')
('DEF', 'str')

有人能簡單解釋一下嗎? 我正在運行python 2.7

(('a', 'b'))('a', 'b')

你真的想要(('a', 'b'),)

這在此處記錄:

5.13。 表達列表

expression_list ::= expression ( "," expression )* [","]

包含至少一個逗號的表達式列表產生一個元組。 元組的長度是列表中表達式的數量。 表達式從左到右進行評估。

尾隨逗號只需要創建一個元組(也就是單個元素); 在所有其他情況下它是可選的。 沒有尾隨逗號的單個表達式不會創建元組,而是生成該表達式的值。 (要創建一個空元組,請使用一對空括號:()。)

請記住,沒有這個限制,表達式(3) * (4)應該是兩個數字或兩個元組的乘法嗎? 大多數用戶都希望這是數字的乘法。

t = [('ID','int')]

是一個列表中的元組。

t = (('ID','int'))

是一個帶有括號的元組。

t = ('ID','int'),

是一個元組中的元組。

,制作元組! 只需要一個元組周圍的括號來避免歧義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM