2016-10-24 19 views
0

pythonのリストからどのように削除できますか?pythonリストからテキストを削除する

a=[('hello','home','today','cry'),('hello','saturday','today','cry'),('bye','home','today','cry')] 

検索]土曜日は、「すべての('hello','saturday','today','cry')

を削除した場合ので、私は持っている

a=[('hello','home','today','cry'),('bye','home','today','cry')] 

おかげ

答えて

6

使用フィルタとリスト内包

>>> [tup for tup in a if 'saturday' not in tup] 
[('hello', 'home', 'today', 'cry'), ('bye', 'home', 'today', 'cry')] 

参考:

List comprehensions

+0

ありがとうございました! – Silvio

1

私は(新しいリストを作成していない)リストから項目を削除するのOPの需要にこだわっています。したがって、リストの理解は推奨される方法ではありません。結果としてforループを使用して達成することができます。

>>> for i, sublist in enumerate(list(a)): # list(a) to iterate over the copy of a 
...  if 'saturday' in sublist: 
...   del a[i] 
... 
>>> a 
[('hello', 'home', 'today', 'cry'), ('bye', 'home', 'today', 'cry')] 

代わりのaを反復あなたは予期しない結果に結果を反復処理されているリストからオブジェクトをdelatingので、私は、list(a)を反復処理しています。


それは(すでに言及されている)元、離れリストから理解アプローチで、新しいリスト、更新を作成するために、OKである場合、あなたはとしてfilter()を使用することがあります。

>>> list(filter(lambda x: 'saturday' not in x, a)) 
[('hello', 'home', 'today', 'cry'), ('bye', 'home', 'today', 'cry')] 
+0

'a 'をリスト内包と同じにするのはどうですか?これは、これを行うためのpythonic方法ではありません。 –

+0

@ニッカ:OPごとに、彼は* "リストから削除する" *と述べた。 * List Comprehension *は、新しいリストを作成し、元のリストに置き換えることです。しかし、私は部分に同意する*リストの理解は、これのためにもっとpythonicです* –

0

ターンAその後、リストのリストの中へとは「土曜日」

a=[('hello','home','today','cry'),('hello','saturday','today','cry'),('bye','home','today','cry')] 
a=list(a) 
for x in range (len(a)-1,-1,-1): 
    if 'saturday' in list(a[x]): 
      a.pop(x) 

これが与える= [(「こんにちは」、「家」、「今日」のサブリストのそれぞれを確認するに、 '泣いて')

関連する問題