본문 바로가기
파이썬

파이썬 목록의 내용을 가져 와서 다른 목록에 추가

by º기록 2020. 9. 24.
반응형

목록의 내용을 다른 목록에 추가하는 것이 타당한 지 이해하려고합니다.

루프 함수를 통해 만든 첫 번째 목록이 있는데, 파일에서 특정 줄을 가져 와서 목록에 저장합니다.

그런 다음 두 번째 목록을 사용하여 이러한 줄을 저장하고 다른 파일에 대해 새주기를 시작합니다.

내 생각은 for주기가 완료되면 목록을 가져 와서 두 번째 목록에 덤프 한 다음 새주기를 시작하고 첫 번째 목록의 내용을 두 번째 목록에 다시 덤프하지만 추가하면 두 번째 목록이 내 루프에서 생성 된 모든 작은 목록 파일의 합계입니다. 특정 조건이 충족되는 경우에만 목록을 추가해야합니다.

다음과 유사합니다.

# This is done for each log in my directory, i have a loop running
for logs in mydir:

    for line in mylog:
        #...if the conditions are met
        list1.append(line)

    for item in list1:
        if "string" in item: #if somewhere in the list1 i have a match for a string
            list2.append(list1) # append every line in list1 to list2
            del list1 [:] # delete the content of the list1
            break
        else:
            del list1 [:] # delete the list content and start all over

이것이 말이됩니까 아니면 다른 경로로 가야합니까?

로그 목록이 길고 각 텍스트 파일이 꽤 크기 때문에 너무 많은주기를 차지하지 않는 효율적인 무언가가 필요합니다. 그래서 목록이 목적에 맞을 것이라고 생각했습니다.

 

해결 방법

 

당신은 아마 원합니다

list2.extend(list1)

대신에

list2.append(list1)

차이점은 다음과 같습니다.

>>> a = range(5)
>>> b = range(3)
>>> c = range(2)
>>> b.append(a)
>>> b
[0, 1, 2, [0, 1, 2, 3, 4]]
>>> c.extend(a)
>>> c
[0, 1, 0, 1, 2, 3, 4]

list.extend () 는 임의의 이터 러블을 허용하므로

for line in mylog:
    list1.append(line)

으로

list1.extend(mylog)

 

참조 페이지 https://stackoverflow.com/questions/8177079

 

 

반응형

댓글