웹사이트 검색

Python 3의 목록 이해


소개

목록은 Python의 데이터 구조로, 변경 가능하거나 변경 가능하며 순서가 지정된 요소 시퀀스입니다. 목록 내부에 있는 각 요소 또는 값을 항목이라고 합니다. 문자열이 따옴표 사이의 문자로 정의되는 것처럼 목록은 대괄호 [ ] 사이에 값이 있는 것으로 정의됩니다.

목록은 많은 관련 값으로 작업하려는 경우에 사용하기에 좋습니다. 이를 통해 함께 속한 데이터를 함께 유지하고, 코드를 압축하고, 여러 값에 대해 동일한 방법과 작업을 한 번에 수행할 수 있습니다.

컬렉션 유형인 Python 목록 및 기타 데이터 구조에 대해 생각할 때 파일 모음, 노래 재생 목록, 브라우저 북마크, 이메일, 비디오 컬렉션 등 컴퓨터에 있는 다양한 컬렉션을 모두 고려하는 것이 유용합니다. 스트리밍 서비스 등에 액세스할 수 있습니다.

전제 조건

컴퓨터나 서버에 Python 3가 설치되어 있고 프로그래밍 환경이 설정되어 있어야 합니다. 프로그래밍 환경이 설정되지 않은 경우 운영 체제(Ubuntu, CentOS, Debian 등)에 적합한 서버의 프로그래밍 환경에 대한 설치 및 설정 가이드를 참조할 수 있습니다.

문자열 목록

시작하려면 문자열 데이터 유형의 항목을 포함하는 목록을 만들어 보겠습니다.

정보: 이 자습서의 예제 코드를 따라하려면 python3 명령을 실행하여 로컬 시스템에서 Python 대화형 셸을 엽니다. 그런 다음 >>> 프롬프트 뒤에 추가하여 예제를 복사, 붙여넣기 또는 편집할 수 있습니다.

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']

목록을 출력하면 출력은 우리가 만든 목록과 똑같이 응답합니다.

print(sea_creatures)
Output
['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']

순서가 지정된 요소 시퀀스로서 목록의 각 항목은 인덱싱을 통해 개별적으로 호출할 수 있습니다. 목록은 더 작은 부분으로 구성된 복합 데이터 유형이며 값을 추가, 제거 및 변경할 수 있기 때문에 매우 유연합니다. 많은 값을 저장하거나 값을 반복해야 하고 이러한 값을 쉽게 수정할 수 있기를 원하는 경우 목록 데이터 유형을 사용하고 싶을 것입니다.

이 자습서에서는 Python에서 목록으로 작업할 수 있는 몇 가지 방법을 살펴보겠습니다.

인덱싱 목록

목록의 각 항목은 색인 번호 0부터 시작하는 정수 값인 색인 번호에 해당합니다.

목록 sea_creatures의 경우 인덱스 분석은 다음과 같습니다.

‘shark’ ‘cuttlefish’ ‘squid’ ‘mantis shrimp’ ‘anemone’
0 1 2 3 4

첫 번째 항목인 shark 문자열은 인덱스 0에서 시작하고 목록은 인덱스 4에서 항목 anemone 로 끝납니다. .

Python 목록의 각 항목에는 해당 인덱스 번호가 있으므로 다른 순차 데이터 유형과 동일한 방식으로 목록에 액세스하고 조작할 수 있습니다.

이제 인덱스 번호를 참조하여 목록의 개별 항목을 호출할 수 있습니다.

print(sea_creatures[1])
Output
cuttlefish

이 목록의 색인 번호 범위는 위의 표와 같이 0-4입니다. 따라서 항목을 개별적으로 호출하려면 다음과 같이 인덱스 번호를 참조합니다.

sea_creatures[0] = 'shark'
sea_creatures[1] = 'cuttlefish'
sea_creatures[2] = 'squid'
sea_creatures[3] = 'mantis shrimp'
sea_creatures[4] = 'anemone'

4보다 큰 인덱스 번호로 sea_creatures 목록을 호출하면 유효하지 않으므로 범위를 벗어납니다.

print(sea_creatures[18])
Output
IndexError: list index out of range

양수 색인 번호 외에도 -1부터 시작하여 목록 끝에서 거꾸로 세어 음수 색인 번호가 있는 목록의 항목에 액세스할 수도 있습니다. 이는 긴 목록이 있고 목록의 끝 부분에 있는 항목을 정확히 지정하려는 경우에 특히 유용합니다.

동일한 목록 sea_creatures의 경우 음수 인덱스 분석은 다음과 같습니다.

‘shark’ ‘cuttlefish’ ‘squid’ ‘mantis shrimp’ ‘anemone’
-5 -4 -3 -2 -1

따라서 음수 인덱스 번호를 사용하여 squid 항목을 인쇄하려면 다음과 같이 할 수 있습니다.

print(sea_creatures[-3])
Output
squid

+ 연산자를 사용하여 목록의 문자열 항목을 다른 문자열과 연결할 수 있습니다.

print('Sammy is a ' + sea_creatures[0])
Output
Sammy is a shark

색인 번호 0에 있는 문자열 항목을 문자열 Sammy is a 와 연결할 수 있었습니다. + 연산자를 사용하여 2개 이상의 목록을 함께 연결할 수도 있습니다.

목록 내의 항목에 해당하는 색인 번호를 사용하여 목록의 각 항목에 개별적으로 액세스하고 해당 항목을 사용할 수 있습니다.

목록에서 항목 수정

인덱스 번호를 다른 값과 동일하게 설정하여 목록 내의 항목을 변경하기 위해 인덱싱을 사용할 수 있습니다. 이렇게 하면 목록에 포함된 항목을 수정하고 업데이트할 수 있으므로 목록을 더 잘 제어할 수 있습니다.

인덱스 1에 있는 항목의 문자열 값을 오징어에서 문어로 변경하려면 다음과 같이 할 수 있습니다.

sea_creatures[1] = 'octopus'

이제 sea_creatures를 인쇄하면 목록이 달라집니다.

print(sea_creatures)
Output
['shark', 'octopus', 'squid', 'mantis shrimp', 'anemone']

대신 음수 색인 번호를 사용하여 항목의 값을 변경할 수도 있습니다.

sea_creatures[-3] = 'blobfish'
print(sea_creatures)
Output
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone']

이제 blobfish-3의 음수 인덱스 번호에서 squid를 대체했습니다(2 의 양수 인덱스 번호에 해당). ).

목록의 항목을 수정할 수 있으면 효율적인 방식으로 목록을 변경하고 업데이트할 수 있습니다.

슬라이싱 목록

목록에서 몇 가지 항목을 호출할 수도 있습니다. sea_creatures의 중간 항목만 인쇄하고 싶다고 가정해 보겠습니다. 조각을 만들어 그렇게 할 수 있습니다. 슬라이스를 사용하면 [x:y] 콜론으로 구분된 인덱스 번호 범위를 생성하여 여러 값을 호출할 수 있습니다.

print(sea_creatures[1:4])
Output
['octopus', 'blobfish', 'mantis shrimp']

[1:4]와 같이 슬라이스를 생성할 때 첫 번째 인덱스 번호는 슬라이스가 시작되는 위치(포함)이고 두 번째 인덱스 번호는 슬라이스가 끝나는 위치(제외)입니다. 위의 예에서 1, 23 위치에 있는 항목이 인쇄되는 항목입니다.

목록의 양쪽 끝을 포함하려면 list[x:y] 구문에서 숫자 중 하나를 생략할 수 있습니다. 예를 들어 sea_creatures 목록의 처음 3개 항목을 인쇄하려면 shark, octopus, blobfish 가 됩니다. — 다음을 입력하면 됩니다.

print(sea_creatures[:3])
Output
['shark', 'octopus', 'blobfish']

이렇게 하면 목록의 시작 부분이 인쇄되고 인덱스 3 바로 앞에서 멈춥니다.

목록 끝에 있는 모든 항목을 포함하려면 구문을 반대로 해야 합니다.

print(sea_creatures[2:])
Output
['blobfish', 'mantis shrimp', 'anemone']

양수 인덱스 번호와 유사하게 목록을 슬라이싱할 때 음수 인덱스 번호를 사용할 수도 있습니다.

print(sea_creatures[-4:-2])
print(sea_creatures[-3:])
Output
['octopus', 'blobfish'] ['blobfish', 'mantis shrimp', 'anemone']

슬라이싱에 사용할 수 있는 마지막 매개변수 중 하나는 stride라고 하며, 목록에서 첫 번째 항목을 검색한 후 앞으로 이동할 항목 수를 나타냅니다. 지금까지 우리는 stride 매개변수를 생략했으며 Python은 기본적으로 stride 1을 사용하므로 두 인덱스 번호 사이의 모든 항목이 검색됩니다.

이 구성의 구문은 list[x:y:z]이며 z는 보폭을 나타냅니다. 더 큰 목록을 만든 다음 슬라이스하고 stride 값을 2로 지정해 보겠습니다.

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

print(numbers[1:11:2])
Output
[1, 3, 5, 7, 9]

우리의 구성 number[1:11:2]1을 포함하고 11을 제외한 인덱스 번호 사이의 값을 인쇄한 다음 stride 값은 2는 다른 모든 항목만 인쇄하도록 프로그램에 지시합니다.

처음 두 매개변수를 생략하고 list[::z] 구문을 사용하여 stride만 매개변수로 사용할 수 있습니다.

print(numbers[::3])
Output
[0, 3, 6, 9, 12]

stride가 3으로 설정된 목록 숫자를 출력하면 세 번째 항목마다 출력됩니다.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

양수 및 음수 인덱스 번호와 보폭을 나타내는 목록을 슬라이싱하면 목록을 조작하고 달성하려는 출력을 수신할 수 있는 제어 기능이 제공됩니다.

연산자로 목록 수정

연산자를 사용하여 목록을 수정할 수 있습니다. +* 연산자와 그 복합 형식인 +=*=를 사용하여 검토합니다.

+ 연산자는 둘 이상의 목록을 함께 연결하는 데 사용할 수 있습니다.

sea_creatures = ['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone']
oceans = ['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']

print(sea_creatures + oceans)
Output
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']

+ 연산자는 연결할 수 있기 때문에 목록 형식의 항목(또는 여러 개)을 다른 목록 끝에 추가하는 데 사용할 수 있습니다. 항목을 대괄호 안에 넣어야 합니다.

sea_creatures = sea_creatures + ['yeti crab']
print (sea_creatures)
Output
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

* 연산자를 사용하여 목록을 곱할 수 있습니다. 디렉토리에 있는 모든 파일을 서버에 복사하거나 친구와 재생 목록을 공유해야 할 수 있습니다. 이러한 경우 데이터 컬렉션을 곱해야 합니다.

sea_creatures 목록에 2를 곱하고 oceans 목록에 3을 곱해 보겠습니다.

print(sea_creatures * 2)
print(oceans * 3)
Output
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab'] ['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']

* 연산자를 사용하여 지정한 횟수만큼 목록을 복제할 수 있습니다.

할당 연산자 =와 함께 +* 연산자의 복합 형식을 사용할 수도 있습니다. +=*= 복합 연산자를 사용하여 빠르고 자동화된 방식으로 목록을 채울 수 있습니다. 예를 들어 이러한 연산자를 사용하여 나중에 사용자 제공 입력으로 수정할 수 있는 자리 표시자로 목록을 채울 수 있습니다.

sea_creatures 목록에 목록 형식의 항목을 추가해 봅시다. 이 항목은 자리 표시자 역할을 하며 이 자리 표시자 항목을 여러 번 추가하려고 합니다. 이를 위해 for 루프와 함께 += 연산자를 사용합니다.

for x in range(1,4):
    sea_creatures += ['fish']
    print(sea_creatures)
Output
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish'] ['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish'] ['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish', 'fish']

for 루프가 반복될 때마다 fish의 추가 목록 항목이 원래 목록 sea_creatures에 추가됩니다.

*= 연산자는 비슷한 방식으로 작동합니다.

sharks = ['shark']

for x in range(1,4):
    sharks *= 2
    print(sharks)
Output
['shark', 'shark'] ['shark', 'shark', 'shark', 'shark'] ['shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']

연산자 +*를 사용하여 목록을 연결하고 목록을 곱할 수 있습니다. 복합 연산자 +=*=는 목록을 연결하고 목록을 곱하고 새 ID를 원래 목록에 전달할 수 있습니다.

목록에서 항목 제거

del 문을 사용하여 목록에서 항목을 제거할 수 있습니다. 이렇게 하면 목록 내에서 지정한 인덱스 번호의 값이 삭제됩니다.

sea_creatures 목록에서 octopus 항목을 제거하겠습니다. 이 항목은 1의 인덱스 위치에 있습니다. 항목을 제거하려면 del 문을 사용한 다음 목록 변수와 해당 항목의 인덱스 번호를 호출합니다.

sea_creatures =['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

del sea_creatures[1]
print(sea_creatures)
Output
['shark', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

이제 인덱스 위치 1에 있는 항목인 문자열 octopus는 더 이상 목록 sea_creatures에 없습니다.

del 문으로 범위를 지정할 수도 있습니다. 항목 octopus뿐만 아니라 blobfishmantis 새우도 제거하고 싶다고 가정해 보겠습니다. 이를 달성하기 위해 del 문을 사용하여 sea_creatures의 범위를 호출할 수 있습니다.

sea_creatures =['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

del sea_creatures[1:4]
print(sea_creatures)
Output
['shark', 'anemone', 'yeti crab']

del 문과 함께 범위를 사용하여 색인 번호 1(포함)과 색인 번호 4 사이의 항목을 제거할 수 있었습니다. (독점), 3개 항목 제거 후 3개 항목 목록이 남습니다.

del 문을 사용하면 목록 데이터 유형에서 특정 항목을 제거할 수 있습니다.

목록 항목으로 목록 구성

목록은 목록으로 구성된 항목으로 정의할 수 있으며 각 대괄호로 묶인 목록은 상위 목록의 큰 대괄호 안에 들어 있습니다.

sea_names = [['shark', 'octopus', 'squid', 'mantis shrimp'],['Sammy', 'Jesse', 'Drew', 'Jamie']]

목록 내의 이러한 목록을 중첩 목록이라고 합니다.

이 목록 내의 항목에 액세스하려면 여러 인덱스를 사용해야 합니다.

print(sea_names[1][0])
print(sea_names[0][0])
Output
Sammy shark

첫 번째 목록은 항목과 같기 때문에 인덱스 번호가 0이고, 두 번째 목록은 인덱스 번호가 1입니다. 각 내부 중첩 목록에는 다음이 있습니다. 두 번째 색인 번호에서 호출할 별도의 색인 번호:

sea_names[0][0] = 'shark'
sea_names[0][1] = 'octopus'
sea_names[0][2] = 'squid'
sea_names[0][3] = 'mantis shrimp'

sea_names[1][0] = 'Sammy'
sea_names[1][1] = 'Jesse'
sea_names[1][2] = 'Drew'
sea_names[1][3] = 'Jamie'

목록 목록으로 작업할 때 관련 중첩 목록 내의 특정 항목에 액세스하려면 둘 이상의 색인 번호를 참조해야 한다는 점을 염두에 두는 것이 중요합니다.

결론

목록 데이터 유형은 프로그램 전체에서 수정할 수 있는 유연한 데이터 유형입니다. 이 자습서에서는 목록 인덱싱, 슬라이싱, 수정 및 연결을 포함하여 목록의 기본 기능에 대해 설명했습니다.

여기에서 "데이터 유형 이해\ 자습서를 읽으면 Python에서 목록 작업에 대해 자세히 알아볼 수 있습니다.