2016-09-17 24 views
-1

私はdatetimeを使用せずに次の練習問題を解決しようとしました!Exercise python:リスト内の要素をグループ化する方法は?

演習:int型のリストを考えると

、第3 intは日付を表すような、 第2の3 elementiはして1つの文字列内のすべてのトリプル をグループ化することにより、LST etc..modify日付を表します数字は "/"で区切られています。

例:

lst = [1, 2, 2013, 23, 9, 2011, 10, 11, 2000] 
groupd(lst) 
lst 
['1/2/2013', '23/9/2011', '10/11/2000'] 

私の試み:

lst = [1, 2, 2013, 23, 9, 2011, 10, 11, 2000]. 
stri = str(lst). 

def groupd(lst):. 
cont = 1. 
a = (stri.replace(',', '/')). 
    for x in lst:. 
     if len[x]>2:.     
      lst.insert(lst[0],a)]. 
       print(a).   
print(groupd(lst)). 

PS:私の英語のため申し訳ありません!皆さん、ありがとうございました!

+0

を使用したくない場合にも、このような問題を解決するための基本的なアプローチですか?これにより、プログラムが実行されなくなります。 Pythonの行終端文字は改行であり、 '.'や'; 'やその他のものではありません。 – MattDMo

答えて

2

あなたはタプルを作成するためにzipを使用して、あなたの文字列にそれらをフォーマットすることができます。

>>> ['%d/%d/%d' % parts for parts in zip(lst[::3], lst[1::3], lst[2::3])] 
['1/2/2013', '23/9/2011', '10/11/2000'] 

オフセット(スライスの最初の引数)から開始し(スライシングの3番目の引数)の項目をスキップしながら行動を窓掛けすることができます。一般的に

より:

>>> N = 3 
>>> ['/'.join(['%d'] * N) % parts for parts in zip(*[lst[start::N] for start in range(N)])] 
['1/2/2013', '23/9/2011', '10/11/2000'] 
1

グループ化できますitertoolsからgroupbyを使用して、それのインデックスリスト:

from itertools import groupby 
['/'.join(str(i[1]) for i in g) for _, g in groupby(enumerate(lst), key = lambda x: x[0]/3)] 

# ['1/2/2013', '23/9/2011', '10/11/2000'] 
0

これは、答えは、再帰的に周りに渡された機能的なアプローチの詳細です関数。

lst1 = [1, 2, 2013, 23, 9, 2011, 10, 11, 2000] 
lst2 = [] 
lst3 = [1,2, 2015] 
lst4 = [1,2] 
lst5 = [1] 
lst6 = [1,2,2013, 23, 9] 

def groupToDate(lst, acc): 
    if len(lst) < 3: 
     return acc 
    else: 
     # take first elements in list 
     day = lst[0] 
     month = lst[1] 
     year = lst[2] 
     acc.append(str(day) + '/' + str(month) + '/' + str(year)) 
     return groupToDate(lst[3:len(lst)], acc) 


print(groupToDate(lst1, [])) 
print(groupToDate(lst2, [])) 
print(groupToDate(lst3, [])) 
print(groupToDate(lst4, [])) 
print(groupToDate(lst5, [])) 
print(groupToDate(lst6, [])) 

あなたは、各行の末尾にピリオド/フルストップを持っていないのはなぜリストの内包またはGROUPBY

関連する問題