4

私は現在Pythonを学んでいます。

これをどのように置くか:

dates = list()  
for entry in some_list:  
    entry_split = entry.split()    
    if len(entry_split) >= 3:  
        date = entry_split[1]
        if date not in dates:  
            dates.append(date)

Pythonでワンライナーに?

4

5 に答える 5

6

1 ライナーより 3 ライナーの方が分かりやすいかもしれません。

table = (entry.split() for entry in some_list)
raw_dates = (row[1] for row in table if len(row) >= 3)
# Uniquify while keeping order. http://stackoverflow.com/a/17016257
dates = list(collections.OrderedDict.fromkeys(raw_dates))
于 2013-06-19T21:11:38.953 に答える
0

リスト内包表記の使用:

dates = set([entry.split()[1] for entry in some_list if len(entry.split()) >= 3])

これにより、必要なものが得られます。

>>> some_list = [
... "a 2011-08-04 b",
... "x y",
... "e 2012-03-04 g"
... ]
>>> dates = set([entry.split()[1] for entry in some_list if len(entry.split()) >= 3])
>>> dates
{'2011-08-24', '2012-03-04'}
于 2013-06-19T21:03:18.997 に答える