programing

특정 길이의 하위 목록을 인쇄하려면 어떻게 해야 합니까?

minimums 2023. 5. 13. 09:22
반응형

특정 길이의 하위 목록을 인쇄하려면 어떻게 해야 합니까?

하위 목록이 있는 목록이 있습니다.저는 모든 서브리스트를 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

반응형