2017-07-01 39 views
-2

嗨我想檢查是否有任何方式獲取數組的子項,例如下面。在Python中提取數組中的子項

Array = [('a',1,'aa'),('b',2,'bb'),('c',3,'cc')] 

如果想打印出所有子項目第二數組這樣[ 1, 2, 3]

或者,也許第三子項目這樣[ aa , bb, cc]

請幫我...謝謝你這麼多

+0

然後使用一個循環得到那麼第二個或第三個元素。另外,確保裏面的元組有足夠的長度來執行這樣的操作 –

回答

-1

你可以通過創建一個函數來獲得元組(或列表)中的第n項,然後在一個循環內調用該函數,如下所示:

my_array = [('a', 1, 'aa'), ('b', 2, 'bb'), ('c', 3, 'cc')] 
result_array = [] 
n = 2 # set your desired index here 

def get_nth(some_tuple, index): 
    result_array.append(some_tuple[index] if len(some_tuple) > index else None) 

for sub_item in my_array: 
    get_nth(sub_item, n) 

print result_array 
+0

謝謝...我會試試看.. –

-1

使用ZIP:

Array = [ ('a',1,'aa'),('b',2,'bb'),('c',3,'cc') ] 
zipped = zip(*Array) #gives your desired form 
for item in zipped: 
    print(item) 

輸出:

('a', 'b', 'c') 
(1, 2, 3) 
('aa', 'bb', 'cc') 
0

您可以使用list-comprehension一個function,如:

def get_elem(arr, n): 
    return [x[n] for x in arr] 

然後調用它:

my_array = [('a', 1, 'aa'), ('b', 2, 'bb'), ('c', 3, 'cc')] 
print get_elem(my_array, 1) 

輸出:

[1, 2, 3] 
+0

謝謝...這個工程太.. –

0

Python的設計在它的核心非常容易地處理這個任務。你不需要循環來合併,提取,分割,列表。

List comprehensions很適合做這種容器操作。

Generator expressions可能會更有用,使用情況取決於上下文。

這裏既是一個例子:

array = [('a',1,'aa'), ('b',2,'bb'), ('c',3,'cc')] 
sub_2 = [item[2] for item in array] # sub_2 is a classique list, with a length 
gen_1 = (item[1] for item in array) # gen_1 is a generator, which gather value on the fly when requested 

print(sub_2) 
for i in gen_1: 
    print(i) 

輸出:

['aa', 'bb', 'cc'] 
1 
2 
3 

您可以編寫一個實用功能,以幫助,但在簡單的情況下,它可能不如直接寫發電機哪裏你需要它。

這裏是效用函數的例子,你可以寫:從你的列表中的每個元組

def sub(container, index): 
    return (item[index] for item in container) 

print([i for i in sub(array, 0)]) 

輸出['a', 'b', 'c']

+0

很好..這更簡單..謝謝 –

相關問題