[Python 연구 노트] 08 가장 완벽한 요약 목록

스스로 파이썬을 배우기위한이 노트 시리즈, 오류가 있으면 수정 해주세요.

기능 나열

시퀀스는 일련의 데이터를 저장하는 데 사용되는 데이터 저장 방법입니다. 메모리에서 시퀀스는 여러 값을 저장하는 데 사용되는 블록입니다.마디 없는메모리 공간. 예를 들어 총 정수 시퀀스 [10,20,30,40]은 다음과 같이 개략적으로 나타낼 수 있습니다.
여기에 사진 설명 삽입

python3의 모든 것은 객체이기 때문에 실제로 다음과 같은 방식으로 메모리에 저장됩니다.

a = [10,20,30,40]
여기에 사진 설명 삽입

그림에서 정수 객체의 주소가 정수 객체의 값이 아닌 시퀀스에 저장되어 있음을 알 수 있습니다. 파이썬에서 일반적으로 사용되는 시퀀스 구조는 다음과 같습니다. 문자열 목록 메타 조상 사전 컬렉션.

목록 소개

목록 : 모든 유형의 데이터 수집을 저장하는 데 사용됩니다.

목록에는 여러 요소를 포함하는 순서대로 연속적인 메모리 공간 인 내장 변수 시퀀스가 ​​있습니다. 목록 정의를위한 표준 구문 형식 :

a = [10,20,30,40]

그중 10 20 30 40은 다음과 같습니다.

목록의 요소는 다를 수 있으며 모든 유형이 될 수 있습니다. 예 :

a = [10,20, 'abc', True]

목록 개체의 일반적인 방법 :

방법 포인트 기술
list.append (x) 요소 추가 목록 끝에 요소 x 추가
list.extend (aLIst) 요소 추가 목록의 모든 요소를 ​​목록 끝에 추가
list.insert (인덱스, x) 요소 추가 목록의 지정된 위치 인덱스에 요소 x 삽입
list.remove (x) 요소 삭제 목록에서 지정된 요소 x의 첫 번째 항목을 삭제합니다.
list.pop (x) 요소 삭제 목록의 지정된 위치 인덱스에있는 요소를 삭제하고 반환합니다.
list.pop ([인덱스]) 요소 삭제 목록의 지정된 위치 인덱스에서 요소를 삭제하고 반환합니다. 기본값은 마지막 요소입니다.
list.clear () 모든 요소 삭제 목록 개체를 삭제하지 않고 목록의 모든 요소를 ​​삭제합니다.
list.index (x) 액세스 요소 첫 x의 인덱스 위치를 반환하고 x 요소가 없으면 예외를 발생시킵니다.
list.count (x) 카운트 지정된 요소 x가 목록에 나타나는 횟수를 반환합니다.
아마 (목록) 목록 길이 목록의 요소 수를 반환합니다.
list.reverse () 목록 뒤집기 모든 요소가 제자리에서 반전됩니다.
list.sort () 종류 모든 요소를 ​​제자리에 정렬
list.copy () 얕은 카피 목록 객체의 얕은 복사본을 반환합니다.

Python의 목록 크기는 가변적이며 필요에 따라 늘리거나 줄입니다.

문자열과 목록은 모두 시퀀스 유형이며 문자열은문자 순서, 목록은모든 요소순서.

목록 생성

기본 구문 생성 []

a = [10,20,'slp','sx']
a=[] #创建一个空的列表对象

list () 생성

반복 가능한 데이터를 목록으로 변환하려면 list ()를 사용하십시오.

a =list()# 创建一个空的列表对象
a = list(range(10))
a = list('slp,sx')

range ()는 정수 목록을 만듭니다.

range ()는 정수 목록을 매우 편리하게 만들 수 있도록 도와줍니다 : range ([start], end, [step])

  • 시작 : 선택적 시작 번호 기본값 0
  • 끝 : 필수 끝 번호
  • 단계 : 선택 사항은 단계 크기가 기본적으로 1임을 의미합니다.

python3의 Range ()는 목록이 아닌 범위 객체를 반환합니다. 목록 메서드를 통해 목록 객체로 변환해야합니다.

종합적으로 생성 된 목록

목록 이해를 사용하면 데이터를 생성하는 데 매우 편리 할 수 ​​있으며 개발에 자주 사용됩니다. 그러나 for 루프 및 if 문으로 인해

a = [x*2 for x in range(5)]  #循环创建多个元素
a = [x*2 for x in range(100) if x%9==0] #通过if过滤元素

목록 요소 추가 및 삭제

목록이 요소를 추가 및 삭제하면 목록이 자동으로 메모리 관리를 수행하므로 프로그래머의 부담이 크게 줄어 듭니다. 그러나이 기능은 목록 요소의 많은 이동을 포함하므로 비효율적입니다. 졸업하지 않는 한 일반적으로 목록 끝에 요소 만 추가하므로 목록의 효율성이 크게 향상됩니다.

append () 메서드

목록 개체를 수정하는 것이 목록 끝에 새 요소를 추가하는 가장 빠른 방법입니다. 권장 용도

a = [20,40]
a.append(80)

+ 운영자 운영

실제로 마지막에 요소를 추가하는 것이 아니라 새 목록 개체를 만드는 것입니다. 원본 목록의 요소와 새 목록의 요소를 차례로 새 목록 개체에 복사합니다. 이러한 방식으로 많은 복사 작업이 수반되므로 많은 수의 요소를 작업하지 않는 것이 좋습니다.

a = [20,40]
id(a) #46016027
a = a+[50]
id(a)# 46015432

위에서 a의 주소가 변경되었습니다. 즉, 새로운 목록 객체가 생성됩니다.

extend () 메서드

이 목록의 끝에 대상 목록의 모든 요소를 ​​추가하는 것은 현장 작업이며 새 목록 개체를 만들지 않습니다.

a = [20,40]
a.extend([50,60])

insert () 요소 삽입

insert () 메서드를 사용하여 지정된 요소를 목록 객체의 지정된 위치에 삽입합니다. 이렇게하면 삽입 위치 뒤의 모든 요소가 이동하여 처리 속도에 영향을줍니다. 많은 수의 요소가 관련된 경우에는 사용하지 마십시오. 이런 종류의 움직임의 기능과 유사하게 remove () pop () del ()이 있습니다. 그들은 또한 꼬리가 아닌 요소를 삭제할 때 작동 위치 뒤로 요소를 이동합니다

곱셈 확장

곱하기를 사용하여 목록을 확장하여 새 목록을 생성합니다. 새 목록 요소는 원래 목록 요소의 여러 반복입니다.

곱셈 연산에도 적합합니다 : 문자열 조상.

del delete

목록의 지정된 위치에서 요소를 삭제합니다 (기본 원칙은 여전히 ​​배열의 복사본 임).

a = [10,20,30]
del a[1] #删除第一个元素,下标是从0开始的

pop () 메서드

pop ()은 지정된 위치에서 요소를 삭제하고 반환합니다. 위치가 지정되지 않은 경우 목록의 마지막 요소가 기본적으로 작동합니다.

a  = [10,20,30]
a.pop() #30

없애다()

처음 나타나는 지정된 요소를 삭제하고 요소가 없으면 예외를 발생시킵니다.

a=[10,20,10,30]
a.remove(10) #[20,10,30]

목록 요소 액세스 및 개수

인덱스를 통해 요소에 직접 액세스

인덱스를 통해 요소에 직접 액세스 할 수 있습니다. 인덱스 범위는 [0, 목록 길이 -1] 범위에 있습니다.이 범위를 초과하면 예외가 발생합니다.

index () 목록에서 지정된 요소가 처음 나타나는 색인을 가져옵니다.

index ()는 지정된 요소의 첫 번째 항목의 인덱스 위치를 가져올 수 있습니다. 구문은 index (value, [start, [end]])입니다. 여기서 start 및 end는 검색 범위를 지정합니다.

count () 지정된 요소가 목록에 나타나는 횟수를 가져옵니다.

count ()는 지정된 요소가 목록에 나타나는 횟수를 반환 할 수 있습니다.

a = [10,20,10,30]
a.count(10) #2

len ()은 목록의 길이를 반환합니다.

len ()은 요소의 수인 목록의 길이를 반환합니다.

회원 판단

목록에 지정된 요소가 있는지 확인하려면 count () 메서드를 사용할 수 있습니다. 0을 반환하면 존재하지 않음을 의미합니다. 0보다 크면 존재 함을 의미하지만 일반적으로 사용합니다. 더 간결한 키워드로 판단하고 True 또는 False를 직접 반환합니다.

a = [10,20,40]
10 in a #True

슬라이스 작업

슬라이싱은 목록, 메타 조상, 문자열 등에 적합한 파이썬 시퀀스 및 중요한 작업입니다.

슬라이스의 형식은 다음과 같습니다.

[시작 오프셋 시작 및 끝 오프셋 끝 [: 스텝 길이]]

일반적인 작업은 다음과 같습니다 (매개 변수가 양수일 때).

작동 및 지침 결과
[:] 전체 목록 추출 [10,20,30] [:] [10,20,30]
[시작 : 시작 인덱스에서 끝까지] [10,20,30] [1 :] [20,30]
[: end] 처음부터 끝까지 -1 [10,20,30] [: 2] [10,20]
[start : end] 시작부터 끝까지 -1 [10,20,30,40] [1 : 3] [20,30]
[시작 : 끝 : 단계] 시작부터 끝까지 추출 -1, 단계 길이는 단계입니다. [10,20,30,40,50,60,60] [1 : 6 : 2] [20,40,60]

기타 작업 (3 개 수량은 음수 임) :

기술 결과
[10,20,30,40,50,60,70] [-3 :] 마지막 세 [50,60,70]
[10,20,30,40,50,60,70] [-5 : -3] 아래에서 세 번째로 아래에서 다섯 번째 (헤더에 꼬리가 포함되지 않음) [30,40]
[10,20,30,40,50,60,70] [::-1] 단계 크기는 음수이고 추출은 오른쪽에서 왼쪽으로 반전됩니다. [70,60,50,40,30,20,10]

슬라이싱 작업 중에 시작 오프셋과 끝 오프셋이 [0, 문자열 길이 -1] 범위에 있지 않습니다.오류 없음, 0보다 작은 시작은 0으로 간주되고 길이 -1보다 큰 끝은 -1로 간주됩니다.

순회 나열

for i in listObj:
    doSomething()

목록의 모든 요소를 ​​새 목록 개체에 복사

다음 코드는 목록 요소 복사를 구현합니까?

list1 = [30,40,50]

list2 = 목록 1

list2를 목록 개체로 지정하면됩니다. 즉, list2와 list1은 동일한 주소 값을 보유합니다. 목록 요소 자체는 복사되지 않습니다.

목록 정렬

원래 목록을 수정하고 새 목록의 정렬을 만들지 마십시오.

a = [20,10,30,40]
id(a)
a.sort() #默认是升序
a.sort(reerse=True) #降序排列
random.shuffle(a) #打乱顺序

새 목록 정렬

== 내장 함수 sorted () ==로 정렬 할 수도 있습니다.이 메서드는 새 목록을 반환합니다.

a = [20,10,30,40]
id(a)
a = sorted(a) # 内置函数 会生成新的列表,所以下方id函数的返回值会变掉
id(a)

reversed ()는 반복자를 반환합니다.

내장 reversed ()는 역 정렬도 지원합니다. 목록 객체의 reversed () 메소드와 달리 내장 reversed ()는 원래 목록을 수정하지 않고 역순으로 정렬 된 반복기 객체를 반환합니다.

a = [20,10,30,40]
c = reversed(a)
list(c) #C是一个迭代器对象,需要转换一下 迭代器只能用一次 转换一次之后就不能再用了

내장 된 기타 기능 관련 요약 나열

최대 및 최소

목록의 최대 값과 최소값을 반환합니다.

합집합

숫자 목록의 모든 요소에 대해 합계 연산을 수행하면 숫자가 아닌 목록 연산에 대해 오류가보고됩니다.

다차원 목록

2 차원 목록

1 차원 목록은 1 차원을 저장하는 데 도움이 될 수 있습니다. 선형 데이터

2 차원 목록은 2 차원 테이블 형식 데이터를 저장하는 데 도움이됩니다.

a = [
    ['高小一',18,30000,'北京'],
    ['高小二',19,40000,'上海'],
    ['高小五',20,1000,'深圳']
]

메모리 구조 다이어그램 :
여기에 사진 설명 삽입

WeChat에서 [Zixin]을 검색하거나 아래 QR 코드를 스캔하여 친구를 사귀고 함께 진행하세요. 이 기사는 지속적으로 업데이트됩니다. 현재 저는 파이썬 백 번 전투에 대한 연구 노트를 정리하고 있으며 앞으로 더 많은 업데이트를 기대합니다.
여기에 사진 설명 삽입

추천

출처blog.csdn.net/weixin_51656605/article/details/112648028