1

ed リストで構成された変数が必要ですが、zip選択されたもののみです。あれは、

selected = (True, True, False)
mylist1 = [1,2,4]
mylist2 = [4,5,8]
mylist3 = [3,2,7]

だから、私が欲しいのは、上記のようなmylist = zip(mylist1, mylist2)場合に取得することですselectedzipつまり、としてマークされているリストのみを表示したいと思いますTrue。現時点では、if-else がたくさんあり、見栄えが悪いです。後で3つ以上のリストで同じことをする必要があり、それにはもっと普遍的な解決策が必要だと感じています. ある?

4

3 に答える 3

4

もっとzip

lists = [mylist1, mylist2, mylist3]
selected_lists = (b for a, b in zip(selected, lists) if a)
result = zip(*selected_lists) # itertools if necessary
于 2013-10-31T23:37:27.457 に答える
1

numpyの索引付けを使用できます。

import numpy as np
selected = np.array([True, True, False])
lists = np.array([mylist1, mylist2, mylist3], dtype = 'object')
zip(*(lists[selected]))

これが機能selectedするには、タプルではなく、numpy 配列である必要があることに注意してください。

実際、 への呼び出しをスキップすることもできますziplists[selected]はすでに への呼び出しの結果と同様のオブジェクトです。zipこれは反復可能であり、各要素は N 個の要素を持つシーケンスです (N は の の数ですTrue) selected

于 2013-10-31T23:40:05.303 に答える