2016-09-07 18 views
5

Làm cách nào để tạo danh sách từ danh sách khác bằng python? Nếu tôi có một danh sách:Làm cách nào để tạo danh sách từ danh sách khác bằng các tiêu chí cụ thể trong Python?

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

Làm thế nào tôi có thể tạo danh sách các chỉ những chữ cái theo dấu gạch chéo "/", tức là

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

Mã sẽ rất hữu ích.

+1

làm sao u tạo ra một danh sách như vậy nó sẽ cho lỗi – vks

+0

Đây là danh sách tên tệp tôi đã sử dụng tar.getmembers(). – Geet

Trả lời

7

Bạn có thể có đầu vào này.Bạn có thể nhận được bằng cách hiểu danh sách đơn giản.

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

hoặc

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

Output: [ 'b', 'd', 'f']

+1

Rất tiếc, xin lỗi. Bạn đánh tôi quá! – TheLazyScripter

+2

@TheLazyScripter u cần phải được chủ động scripter: P – vks

0

Nếu bạn khắc phục danh sách của bạn bằng việc có tất cả các chuỗi gói gọn bằng " ", sau đó bạn có thể sử dụng điều này để có được những gì bạn muốn.

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

Với 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

Simple one-liner có thể là để:?

>> 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'] 
Các vấn đề liên quan