2016-09-07 11 views
5

Jak mogę utworzyć listę z innej listy używając Pythona? Jeśli mam listę:Jak utworzyć listę z innej listy przy użyciu określonych kryteriów w Pythonie?

input = ['a/b', 'g', 'c/d', 'h', 'e/f'] 

Jak utworzyć listę tylko tych listów, które następują ukośnik „/” tzn

desired_output = ['b','d','f'] 

Kod byłyby bardzo pomocne.

+1

skąd u stworzenie takiej listy powinny dać błędy – vks

+0

To lista nazw plików, które dostałem za pomocą tar.getmembers(). – Geet

Odpowiedz

7

Prawdopodobnie masz to wejście. Możesz uzyskać proste zrozumienie listy.

input = ["a/b", "g", "c/d", "h", "e/f"] 
print [i.split("/")[1] for i in input if i.find("/")==1 ] 

lub

print [i.split("/")[1] for i in input if "/" in i ] 

wyjściowe: [ 'b', 'd', 'f']

+1

Ups, przepraszam. Ty też mnie pokonałeś! – TheLazyScripter

+2

@LazyScripter musisz być proaktywnym skrypciarzem: P – vks

0

Jeśli naprawić swoją listę, posiadające wszystkie sznurki w kapsułkach przez " ", możesz użyć tego, aby uzyskać to, czego chcesz.

input = ["a/b", "g", "c/d", "h", "e/f"] 

output = [] 
for i in input: 
    if "/" in i: 
     output.append(i.split("/")[1]) 

print output 
['b', 'd', 'f'] 
2

Z regex:

>>> from re import match 
>>> input = ['a/b', 'g', 'c/d', 'h', 'e/f', '/', 'a/'] 
>>> [m.groups()[0] for m in (match(".*/([\w+]$)", item) for item in input) if m] 
['b', 'd', 'f'] 
1

Proste jedna wkładka może być do:

>> input = ["a/b", "g", "c/d", "h", "e/f"] 
>> list(map(lambda x: x.split("/")[1], filter(lambda x: x.find("/")==1, input))) 
Result: ['b', 'd', 'f'] 
1
>>> input = ["a/b", "g", "c/d", "h", "e/f"] 
>>> output=[] 
>>> for i in input: 
     if '/' in i: 
      s=i.split('/') 
      output.append(s[1]) 

>>> output 
['b', 'd', 'f']