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])
Outputcuttlefish
이 목록의 색인 번호 범위는 위의 표와 같이 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])
OutputIndexError: list index out of range
양수 색인 번호 외에도 -1
부터 시작하여 목록 끝에서 거꾸로 세어 음수 색인 번호가 있는 목록의 항목에 액세스할 수도 있습니다. 이는 긴 목록이 있고 목록의 끝 부분에 있는 항목을 정확히 지정하려는 경우에 특히 유용합니다.
동일한 목록 sea_creatures
의 경우 음수 인덱스 분석은 다음과 같습니다.
‘shark’ | ‘cuttlefish’ | ‘squid’ | ‘mantis shrimp’ | ‘anemone’ |
---|---|---|---|---|
-5 | -4 | -3 | -2 | -1 |
따라서 음수 인덱스 번호를 사용하여 squid
항목을 인쇄하려면 다음과 같이 할 수 있습니다.
print(sea_creatures[-3])
Outputsquid
+
연산자를 사용하여 목록의 문자열 항목을 다른 문자열과 연결할 수 있습니다.
print('Sammy is a ' + sea_creatures[0])
OutputSammy 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
, 2
및 3
위치에 있는 항목이 인쇄되는 항목입니다.
목록의 양쪽 끝을 포함하려면 list[x:y]
구문에서 숫자 중 하나를 생략할 수 있습니다. 예를 들어 sea_creatures
목록의 처음 3개 항목을 인쇄하려면 shark
, octopus
, blobfish<가 됩니다. /code> — 다음을 입력하면 됩니다.
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
뿐만 아니라 blobfish
및 mantis 새우
도 제거하고 싶다고 가정해 보겠습니다. 이를 달성하기 위해 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< 사이의 항목을 제거할 수 있었습니다. /code> (독점), 3개 항목 제거 후 3개 항목 목록이 남습니다.
del
문을 사용하면 목록 데이터 유형에서 특정 항목을 제거할 수 있습니다.
목록 항목으로 목록 구성
목록은 목록으로 구성된 항목으로 정의할 수 있으며 각 대괄호로 묶인 목록은 상위 목록의 큰 대괄호 안에 들어 있습니다.
sea_names = [['shark', 'octopus', 'squid', 'mantis shrimp'],['Sammy', 'Jesse', 'Drew', 'Jamie']]
목록 내의 이러한 목록을 중첩 목록이라고 합니다.
이 목록 내의 항목에 액세스하려면 여러 인덱스를 사용해야 합니다.
print(sea_names[1][0])
print(sea_names[0][0])
OutputSammy
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에서 목록 작업에 대해 자세히 알아볼 수 있습니다.