Bir öğe bir alt dizeyle eşleşiyorsa listeden nasıl çıkarılır?Listeden bir öğenin bir alt dizeyle eşleştirilmesi - Python
i kaldırılması gereken birkaç bitişik öğeler eksik ediyormuş gibi pop()
ve enumerate
yöntemi kullanarak bir listeden bir öğe çıkarmadan çalıştı ama görünüyor var:
sents = ['@$\tthis sentences needs to be removed', 'this doesnt',
'@$\tthis sentences also needs to be removed',
'@$\tthis sentences must be removed', 'this shouldnt',
'# this needs to be removed', 'this isnt',
'# this must', 'this musnt']
for i, j in enumerate(sents):
if j[0:3] == "@$\t":
sents.pop(i)
continue
if j[0] == "#":
sents.pop(i)
for i in sents:
print i
Çıktı:
this doesnt
@$ this sentences must be removed
this shouldnt
this isnt
#this should
this musnt
İstenilen çıktı:
this doesnt
this shouldnt
this isnt
this musnt
Bu listede yinelenen öğeleri bir listeden kaldırma klasik vaka. Bununla ilgili düzinelerce diğer Stack Overflow sorularını okuyun. Ayrıca, [dokümanlardaki not] bölümüne bakın (http://docs.python.org/reference/compound_stmts.html#for). –
Her zaman bir konteynerin uzunluğunu boyunca değiştirirken, bu devirdeki – wim
için bir reçete olduğunu unutmayın Genel olarak, bir listeyi yerinde değiştirmeyi denemek daha iyi filtrelenmiş bir liste oluşturmak için daha iyidir. Sürdürülebilir algoritmalar, akılda tutulması her zaman daha kolaydır (yazmayı öğrenmek her zaman kolay olmasa da). Değerleri değiştirdiğinizde, bazen yerinde çalışma verimlilikleri artar, ancak bir listenin ortasına silerek veya eklediğinizde, genellikle daha az sağlam mantığınızla birlikte _worse_ verimi elde edersiniz. – abarnert