6

基本的に 2D テーブル (MySQL クエリから返される) であるネストされたタプルがあります。スライシングを使用して、テーブルの 1 つの「列」のリストまたはタプルを取得できますか?

例えば:

t = ((1,2,3),(3,4,5),(1,4,5),(9,8,7))

x = 6

xタプルの 3 番目の位置に表示されるかどうかを効率的に確認するにはどうすればよいですか?

私が見つけたスライシングの例はすべて、単一のタプル内でのみ機能します。t から「行」をスライスしたくありません。私はそれを逆にスライスしたい - 垂直に。

4

2 に答える 2

12

ここでの最善の策は、any()関数でジェネレーター式を使用することです。

if any(row[2] == x for row in t):
    # x appears in the third row of at least one tuple, do something

スライスを使用して列を取得する限り、いくつかのオプションがあります。

  • 使用zip():

    >>> zip(*t)[2]
    (3, 5, 5, 7)
    
  • リスト内包表記の使用:

    >>> [row[2] for row in t]
    [3, 5, 5, 7]
    
于 2013-04-02T23:02:41.420 に答える
3

私はでこぼこした解決策でチャイムを鳴らします

import numpy
t = ((1,2,3),(3,4,5),(1,4,5),(9,8,7))
x = 6
col_id = 2

a = numpy.array(t)
print a[a[:,col_id] == x]
于 2013-04-02T23:41:54.160 に答える