簡體   English   中英

如何在Python中索引嵌套列表?

[英]How to index nested lists in Python?

我有一個嵌套列表,如下所示:

A = [('a', 'b', 'c'),
     ('d', 'e', 'f'),
     ('g', 'h', 'i')]

我試圖使用代碼打印每個列表的第一個元素:

A = [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i')]
print A[:][0]

但我得到以下輸出:

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

所需輸出:

('a', 'd', 'g')

如何在Python中獲得此輸出?

A[:]只創建整個列表的副本,之后您將獲得該副本的元素0

你需要在這里使用列表理解:

[tup[0] for tup in A]

獲取列表,或使用帶有生成器表達式的tuple()來獲取元組:

tuple(tup[0] for tup in A)

演示:

>>> A = [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i')]
>>> [tup[0] for tup in A]
['a', 'd', 'g']
>>> tuple(tup[0] for tup in A)
('a', 'd', 'g')

您可以使用zip(*list_of_lists)轉置列表/元組列表,然后選擇所需的項目。

>>> a
[('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i')]
>>> b = zip(*a)
>>> b
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]
>>> b[0]
('a', 'd', 'g')
>>> 
>>> c = zip(*a)[0]
>>> c
('a', 'd', 'g')
>>>

Python列表不能很好地用作多維數組。 如果你願意添加一個額外的依賴項(例如,如果你要進行大量的數組操作), numpy允許你使用你正在尋找的幾乎所有語法

import numpy as np
A = np.array([('a', 'b', 'c'),
              ('d', 'e', 'f'),
              ('g', 'h', 'i')])

這會將行輸出為np.array(可以像列表一樣訪問):

>>> A[:,0]
array(['a', 'd', 'g'])

要將第一行作為元組:

>>> tuple(A[:,0])
('a', 'd', 'g')

你也可以這樣做:

>>> A = [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i')]
>>> map(lambda t:t[0], A)
['a', 'd', 'g']
>>> tuple(map(lambda t:t[0],A))
('a', 'd', 'g')

您還可以使用pandas獲取所需的行為,如下所示:

In [1]: import pandas as pd

In [2]: A = [('a', 'b', 'c'),
     ('d', 'e', 'f'),
     ('g', 'h', 'i')]

In [3]: df = pd.DataFrame(A)

In [4]: df[:][0]
Out[4]:
0    a
1    d
2    g
Name: 0, dtype: object

In [5]: df[:][0].values
Out[5]: array(['a', 'd', 'g'], dtype=object)

暫無
暫無

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

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