2017-01-23 2 views
-1

を検索:Pythonは次の操作を実行することが可能であった場合、私は思っていた側のリストにリストの

very_special = ["special"] 
my_list = ["stuff", very_special] 
if "special" in my_list: 
    print ("Found it") 

あなたが全部を通じてコードの外観を持つ、いくつかの方法でこれを行うことができれば、私は思っていました、リストの中のリストを含む。あなたは再帰を使用することによって、これを達成することができます+演算子

very_special = ["special"] 
my_list = ["stuff"] + very_special 
if "special" in my_list: 
    print ("Found it") 
+0

あなたは文字列としてリストを検索しています。 – Harsha

答えて

-1

。これらの線に沿って何か:

​​
+0

私はベースリストを変更することは彼が求めていたものだとは思わない –

0

他のユーザーここでは、それは彼が尋ねた何のためにやり過ぎかもしれない...再帰を示唆しました。あなたはアイテムだけを見ることもできます。

very_special = ["special"] 
my_list = ["stuff", very_special] 

if "special" in my_list: 
    print("Found it") 

for item in my_list: 
    if isinstance(item, list) and "special" in item: 
     print("Found it nested inside") 
0

ネストが外リストの各要素の上に一つだけレベルの深さ、することができますループの場合:あなたは、任意のネストを処理したい場合は、あなたが最初にそれらを平らにする必要があります

for elem in my_list: 
    if elem == "special" or (isinstance(elem, collections.Iterable) and "special" in elem): 
    print("Found it.") 

Flatten (an irregular) list of listsのように):あなたの周りのいくつかの作業を必要とするこのような状況のために

def flatten(lst): 
    for elem in lst: 
    if isinstance(elem, collections.Iterable) and not isinstance(elem, (str, bytes)): 
     yield from flatten(elem) 
    else: 
     yield elem 

if "special" in flatten(my_list): 
    print ("Found it") 
0

、ここでそれを達成するためのスニペットです。同じようにあなた自身で仕事を書くことができます。

very_special = ["special", "v", ["xyz", "we"]] 
my_list = ["stuff", "n", very_special] 

def aggregate(newList): 
    opList = [] 
    for item in newList: 
     if list is type(item): 
      opList += aggregate(item) 
     else: 
      opList.append(item) 

    return opList 


if "special" in aggregate(my_list): 
    print ("Found it") 
0

オリジナルの提案方法を使用しても機能しません。メンバーシップオペレータinは通常、xyのメンバーであるかどうかを確認するために、深く進むことなくyのメンバーであるかどうかを確認することです。

この具体例では、これを解決するための非常に具体的な方法があります。

very_special = ["special"] 
my_list = ["stuff", very_special] 

for element in my_list: 
    if "special" in element: 
     print ("Found it") 
0

ニーズに応じて、以下のアプローチが適切であるかもしれない:

import itertools 

very_special = ["special"] 
my_list = ["stuff", very_special] 

if "special" in itertools.chain.from_iterable(my_list): 
    print ("Found it") 

これは遅延評価される単一のiterable引数からチェーン入力を取得するPythonのchain()機能を利用します。

関連する問題