嗨我想檢查是否有任何方式獲取數組的子項,例如下面。在Python中提取數組中的子項
Array = [('a',1,'aa'),('b',2,'bb'),('c',3,'cc')]
如果想打印出所有子項目第二數組這樣[ 1, 2, 3]
或者,也許第三子項目這樣[ aa , bb, cc]
請幫我...謝謝你這麼多
嗨我想檢查是否有任何方式獲取數組的子項,例如下面。在Python中提取數組中的子項
Array = [('a',1,'aa'),('b',2,'bb'),('c',3,'cc')]
如果想打印出所有子項目第二數組這樣[ 1, 2, 3]
或者,也許第三子項目這樣[ aa , bb, cc]
請幫我...謝謝你這麼多
你可以通過創建一個函數來獲得元組(或列表)中的第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
謝謝...我會試試看.. –
使用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')
您可以使用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]
謝謝...這個工程太.. –
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']
很好..這更簡單..謝謝 –
然後使用一個循環得到那麼第二個或第三個元素。另外,確保裏面的元組有足夠的長度來執行這樣的操作 –