この質問はとても簡単かもしれません。たとえば、次のようなリストがあります。
a = [1,1,1,1,2,3,4,5,5,5,5,6,7,7,8,9,14,14]
リストに同じ要素を保持したくありません。したがって、次のように変換します。
a = [1,2,3,4,5,6,7,8,9,14]
どうすればこれを管理できますか? 前もって感謝します。
この質問はとても簡単かもしれません。たとえば、次のようなリストがあります。
a = [1,1,1,1,2,3,4,5,5,5,5,6,7,7,8,9,14,14]
リストに同じ要素を保持したくありません。したがって、次のように変換します。
a = [1,2,3,4,5,6,7,8,9,14]
どうすればこれを管理できますか? 前もって感謝します。
それをセットに変換します。
a = list(set(a))
itertools のunique_everseen
レシピを使用すると、順序が維持されます。
順序が重要でない場合は、 を使用しますset()
。
In [294]: a = [1,1,1,1,2,3,4,5,5,5,5,6,7,7,8,9,14,14]
In [295]: list(unique_everseen(a))
Out[295]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 14]
unique_everseen
:
def unique_everseen(iterable, key=None):
"List unique elements, preserving order. Remember all elements ever seen."
# unique_everseen('AAAABBBCCDAABBB') --> A B C D
# unique_everseen('ABBCcAD', str.lower) --> A B C D
seen = set()
seen_add = seen.add
if key is None:
for element in ifilterfalse(seen.__contains__, iterable):
seen_add(element)
yield element
else:
for element in iterable:
k = key(element)
if k not in seen:
seen_add(k)
yield element
リストをセットに変換すると、重複が削除され、リストに変換されます。
a = list(set(a))
import itertools
a = [k for k, g in itertools.groupby(a)]
これは、例のように、元のリストの重複するアイテムが既にグループ化されていることを前提としています。この方法を使用する利点はset()
、元の順序が維持されることです。
または、順序を維持する必要がある場合sorted
:
a = [1,1,1,1,2,3,4,5,5,5,5,6,7,7,8,9,14,14]
sorted(set(a))
結果:
[1、2、3、4、5、6、7、8、9、14]