3

アクセスしたいネストされたリストを持ち、条件に基づいて新しいリストに追加するプログラムがあります。各リストには 3 つのがあり、それらに個別にアクセスする方法を知りたいです。現在の外観は次のとおり[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]です。これをよりよく説明する例として、2 列目のデータが必要な場合、新しいリストは次のようになります['B', 'E', 'H']

これは私がこれまでに持っているものですが、現在かなり立ち往生しています..

n = 0
old_list = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
new_list = []

for a, sublist in enumerate(old_list):
       for b, column in enumerate(sublist):
              print (a, b, old_list[a][b])
              if n == 0:
                     new_list.append(column[0])
              if n == 1:
                     new_list.append(column[1])
              if n == 2:
                     new_list.append(column[2])

print(new_list)         

私の現在の出力..

0 0 A
0 1 B
0 2 C
1 0 D
1 1 E
1 2 F
2 0 G
2 1 H
2 2 I
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

私の望む出力..

n = 0
new_list = ['A', 'D', 'G']

n = 1
new_list = ['B', 'E', 'H']

n = 2
new_list = ['C', 'F', 'I']

ご協力いただきありがとうございます!

4

2 に答える 2

6
>>> L = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
>>> columns = list(zip(*L))
>>> columns
[('A', 'D', 'G'), ('B', 'E', 'H'), ('C', 'F', 'I')]
>>> columns[1] # 2nd column
('B', 'E', 'H')

または、各列をリストとして変更したい場合(zip不変のタプルを返すため)、次を使用します。

columns = [list(col) for col in zip(*L)]
于 2013-04-23T10:23:31.950 に答える