목록 목록이 있습니다.
lists = [[1,4,3,2,4], [4,5]]
이 목록을 병합하고 모든 중복 항목을 제거하고 싶습니다. 즉, 집합 결합 연산을 적용합니다.
desired_result = [1, 2, 3, 4, 5]
이 작업을 수행하는 가장 쉬운 방법은 무엇입니까?
답변
set.union
당신이 원하는 것을 :
>>> results_list = [[1,2,3], [1,2,4]]
>>> results_union = set().union(*results_list)
>>> print(results_union)
set([1, 2, 3, 4])
세 개 이상의 목록으로이 작업을 수행 할 수도 있습니다.
답변
답변
이 스타일을 따를 수도 있습니다
In [12]: a = ['Orange and Banana', 'Orange Banana']
In [13]: b = ['Grapes', 'Orange Banana']
In [14]: c = ['Foobanana', 'Orange and Banana']
In [20]: list(set(a) | set(b) | set(c))
Out[20]: ['Orange and Banana', 'Foobanana', 'Orange Banana', 'Grapes']
In [21]: list(set(a) & set(b) | set(c))
Out[21]: ['Orange and Banana', 'Foobanana', 'Orange Banana']
답변
Union은 정렬 된 목록에서 지원되지 않지만 집합에서 지원됩니다. set.union을 확인하십시오 .
답변
나는 다음을 사용하여 교차로를 만들었으므로 세트가 필요하지 않습니다.
a, b= [[1,2,3], [1,2]]
s = filter( lambda x: x in b, a)
또는,
s = [ x for x in b if x in a ]
답변
이해하기 :
[*{ j for i in lists for j in i }]
또는
[*functools.reduce(lambda x,y: {*x, *y}, lists)]
답변
desired_result = [x for y in lists for x in y]