list1=['hello','hope','hate','hack','bit','basket','code','come','chess']
私が必要とするのは:
list2=[['hello','hope','hate','hack'],['bit','basket'],['code','come','chess']]
最初の文字が同じで同じグループの場合は、サブリストに入れます。
どうすればこれを解決できますか?
ファンシーライブラリのpartition_by関数でそれを行うことができます:
from funcy import partition_by
list2 = partition_by(0, list1)
list1
これは、 と同様に、 が既にソートされている場合にのみ機能することに注意してくださいitertools.groupby
。がソートよりもソートされていない場合list1
、パーティショニングは非効率的です。より良い方法は、group_by関数を使用することです。
from funcy import group_by
list2 = group_by(0, list1).values()