programing

목록 평탄화

minimums 2023. 4. 18. 21:56
반응형

목록 평탄화

Python의 각 괄호에 문제가 있습니다.다음 출력을 생성하는 코드를 작성했습니다.

[[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]

하지만 저는 그것으로 몇 가지 계산을 하고 싶습니다만, 대괄호로는 할 수 없습니다.

브래킷을 분리하려면 어떻게 해야 합니까?저는 몇 가지 예를 보았지만, 이 케이스에 적용할 수 없었습니다.

중첩된 목록 이해를 사용하여 목록을 평탄하게 하여 "괄호 제거"를 수행합니다.그러면 목록 목록에 저장된 각 목록이 풀립니다.

list_of_lists = [[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]
flattened = [val for sublist in list_of_lists for val in sublist]

중첩된 목록 통합은 래핑 해제와 동일한 방식으로 평가됩니다(즉, 각 새 루프에 대해 줄 바꿈 및 탭 추가).이 경우:

flattened = [val for sublist in list_of_lists for val in sublist]

는 다음과 같습니다.

flattened = []
for sublist in list_of_lists:
    for val in sublist:
        flattened.append(val)

큰 차이는 리스트 컴포트가 풀린 루프보다 훨씬 빠르게 평가되어 추가 호출이 제거된다는 것입니다.

서브리스트에 여러 항목이 있는 경우 목록 comp는 해당 항목도 평평하게 만듭니다.즉,

>>> list_of_lists = [[180.0, 1, 2, 3], [173.8], [164.2], [156.5], [147.2], [138.2]]
>>> flattened  = [val for sublist in list_of_lists for val in sublist]
>>> flattened 
[180.0, 1, 2, 3, 173.8, 164.2, 156.5, 147.2,138.2]

나는 사용할 것이다.itertools.chain- 각 서브리스트에 1개 이상의 요소가 포함됩니다.

from itertools import chain
list(chain.from_iterable([[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]))

정해진

d = [[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]

구체적 질문은 다음과 같습니다.브래킷을 분리하려면 어떻게 해야 합니까?

목록 이해 사용:

new_d = [i[0] for i in d]

이걸 줄게

[180.0, 173.8, 164.2, 156.5, 147.2, 138.2]

적절한 인덱스를 사용하여 개별 항목에 액세스할 수 있습니다.new_d[0]너에게 줄 것이다180.0수학에 사용할 수 있습니다.

데이터를 수집하려면 괄호 또는 괄호를 사용합니다.

솔루션은 질문/문제만을 대상으로 합니다.일반화된 솔루션을 제공하는 것은 아닙니다.즉, 귀하의 경우 효과가 있을 것입니다.

>>> lis=[[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]
>>> [x[0] for x in lis]
[180.0, 173.8, 164.2, 156.5, 147.2, 138.2]

언급URL : https://stackoverflow.com/questions/11264684/flatten-list-of-lists

반응형