특정 길이의 하위 목록을 인쇄하려면 어떻게 해야 합니까?
하위 목록이 있는 목록이 있습니다.저는 모든 서브리스트를 3과 같은 길이로 인쇄하고 싶습니다.
나는 파이썬에서 다음을 하고 있습니다.
for x in values[:]:
if len(x) == 3:
print(x)
values
원래 목록입니다.위의 코드는 각 값에 대해 길이가 3인 모든 하위 목록을 인쇄합니까?x
하위 목록을 표시합니다.length == 3
단 한 번
문제가 해결되었습니다.이클립스 편집기에 문제가 있습니다.이유를 알 수 없지만 루프를 실행하면 목록의 절반만 표시됩니다.
이클립스에서 변경해야 하는 설정이 있습니까?
x in mylist
보다 더 낫고 가독성이 뛰어납니다.x in mylist[:]
그리고 당신의len(x)
다음과 같아야 합니다.3
.
>>> mylist = [[1,2,3],[4,5,6,7],[8,9,10]]
>>> for x in mylist:
... if len(x)==3:
... print x
...
[1, 2, 3]
[8, 9, 10]
또는 더 많은 파이썬 사용 목록-이해가 필요한 경우.
>>> [x for x in mylist if len(x)==3]
[[1, 2, 3], [8, 9, 10]]
>>>
을 사용하는 것이 좋습니다.for x in values
보다는for x in values[:]
후자는 불필요한 복사본을 만듭니다.물론 그 코드는 3이 아닌 2의 길이를 확인합니다.
코드는 다음 값당 하나의 항목만 인쇄합니다.x
그리고x
의 요소를 반복하고 있습니다.values
하위 목록입니다.따라서 각 하위 목록은 한 번만 인쇄됩니다.
여기 제가 찾던 해결책이 있습니다.List1에 있는 숫자 요소의 차이를 포함하는 List2를 생성하려는 경우.
list1 = [12, 15, 22, 54, 21, 68, 9, 73, 81, 34, 45]
list2 = []
for i in range(1, len(list1)):
change = list1[i] - list1[i-1]
list2.append(change)
주의할 점은 다음과 같습니다.len(list1)
11(슬롯)입니다.len(list2)
list1의 인덱스가 0인 요소가 아니라 list1의 인덱스가 1인 요소에서 for 루프를 시작하기 때문에 10개의 요소만 될 것입니다.
대신 이 작업을 수행합니다.
values = [[1,2,3],[4,5]]
for x in values:
if len(x) == 3:
print(x)
언급URL : https://stackoverflow.com/questions/9138112/how-can-i-print-sublists-of-a-certain-length
'programing' 카테고리의 다른 글
모듈을 설치하는 동안 "레지스트리에서 가져오지 못했습니다." (0) | 2023.05.13 |
---|---|
보안 웹 서비스에도 액세스하는 iOS 앱에서 Facebook 인증을 위한 설계 (0) | 2023.05.13 |
Node.js / Express.js - app.router는 어떻게 작동합니까? (0) | 2023.05.13 |
"스크립트 실행" 빌드 단계를 릴리스 구성으로 제한하려면 어떻게 해야 합니까? (0) | 2023.05.13 |
git: 치명적:저는 'http' 프로토콜을 처리하지 않습니다. (0) | 2023.05.13 |