リスト「a」があります
a= [(1,2),(1,4),(3,5),(5,7)]
特定の番号のすべてのタプルを見つける必要があります。 1のために言う
result = [(1,2),(1,4)]
それ、どうやったら出来るの?
最初の番号を一致させたい場合は、次のようにできます。
[item for item in a if item[0] == 1]
1を含むタプルを検索する場合:
[item for item in a if 1 in item]
実際には、これを行う巧妙な方法があります。これは、各タプルのサイズが2であるタプルのリストに役立ちます。リストを単一の辞書に変換できます。
例えば、
test = [("hi", 1), ("there", 2)]
test = dict(test)
print test["hi"] # prints 1
[ (x,y) for x, y in a if x == 1 ]
generator functions およびyield
ステートメントも参照してください。
def filter_value( someList, value ):
for x, y in someList:
if x == value :
yield x,y
result= list( filter_value( a, 1 ) )
[tup for tup in a if tup[0] == 1]
for item in a:
if 1 in item:
print item
>>> [i for i in a if 1 in i]
[(1、2)、(1、4)]
フィルター機能の使用:
>>> def get_values(iterables、key_to_find):
return list(filter(lambda x:key_to_find in x、iterables)) >>> a = [(1,2)、(1,4)、(3 、5)、(5,7)] >>> get_values(a、1) >>> [(1、2)、( 1、4)]
filter
関数も興味深い解決策を提供できます。
result = list(filter(lambda x: x.count(1) > 0, a))
1
の出現をリスト内のタプルで検索します。検索が最初の要素に限定されている場合、ソリューションは次のように変更できます。
result = list(filter(lambda x: x[0] == 1, a))
またはtakewhile
(これに加えて、より多くの値の例を示します):
>>> a= [(1,2),(1,4),(3,5),(5,7),(0,2)]
>>> import itertools
>>> list(itertools.takewhile(lambda x: x[0]==1,a))
[(1, 2), (1, 4)]
>>>
ソートされていない場合:
>>> a= [(1,2),(3,5),(1,4),(5,7)]
>>> import itertools
>>> list(itertools.takewhile(lambda x: x[0]==1,sorted(a,key=lambda x: x[0]==1)))
[(1, 2), (1, 4)]
>>>
tupleにある任意の番号をTupleで検索する場合は、次を使用できます。
a= [(1,2),(1,4),(3,5),(5,7)]
i=1
result=[]
for j in a:
if i in j:
result.append(j)
print(result)
特定のインデックスの数値を検索する場合は、if i==j[0] or i==j[index]
を使用することもできます