python 목록 유도 및 생 성기 표현 식 사용

시퀀스
서열 이란 한 조 의 데 이 터 를 말 하 는데 저장 유형 에 따라 용기 서열 과 평면 서열 로 나 누고 수정 여부 에 따라 가 변 서열 과 가 변 서열 로 나 뉜 다.
용기 시퀀스 와 평면 시퀀스
용기 서열 은 list,tuple,collections.deque 를 포함 하여 대상 의 인용 을 저장 합 니 다.
편평 한 서열 은 str,bytes,bytearray,memory view 와 array.array 를 포함 하여 대상 의 값 을 저장 합 니 다.
평면 시퀀스 의 값 은 문자,바이트,수치 와 같은 기본 형식 입 니 다.
가 변 시퀀스 와 가 변 시퀀스
tuple,str,bytes 를 포함 하여 가 변 적 이지 않 은 시퀀스 입 니 다.
list,by tearray,array.array,collection.deque,memory view 를 포함 한 가 변 시퀀스 입 니 다.
다음 그림 왼쪽 은 부모 클래스 이 고 오른쪽 은 하위 클래스 입 니 다.가 변 서열 은 가 변 서열 로 계승 되 지 않 고 가 변 방법 을 확장 한 것 을 알 수 있 습 니 다.

목록 유도
Python 언어의 매력 은 간결 함 에 있 습 니 다.이것 은 가장 흔히 볼 수 있 는 생 성 목록 에서 나타 날 수 있 습 니 다.예 를 들 어 우 리 는 문자열'abc'를 새로운 목록 으로 바 꾸 고 싶 습 니 다.['a','b','c'],일반적인 표기 법:

symbols = "abc"
codes = []
for symbol in symbols:
 codes.append(symbol)
print(codes) # ["a", "b", "c"]
for 순환 과 목록 append 방법 을 사 용 했 습 니 다.실제로 append 방법 을 사용 하지 않 고 직접:

symbols = "abc"
codes = [symbol for symbol in symbols]
이것 은 목록 유도 라 고 하 는데 더욱 Pythonic 의 서법 이다.
작성 효율 이 든 읽 을 수 있 든 목록 추론 이 한 수 위 이 며 목록 을 구축 하 는 빠 른 방법 이 라 고 할 수 있 습 니 다.그러나 남용 해 서 는 안 된다.유 니 버 설 원칙 은 목록 에서 유도 하 는 코드 가 두 줄 을 넘 으 면 append 를 사용 하 는 것 을 고려 해 야 한 다 는 것 이다.규정 이 아니 라 자기 취향 으로 선택 할 수 있다.
피리 칼 적 은 여러 서열 에서 요소 의 모든 조합 을 말 합 니 다.우 리 는 목록 으로 피리 칼 적 을 유도 합 니 다.

colors = ["black", "white"]
sizes = ["S", "M", "L"]
tshirts = [(color, size) for color in colors for size in sizes]
코드 한 줄 완성!Life is short,use Python,list comprehension is wonderful,amazing。
이 줄 코드 는 두 개의 for 순환 이 있 습 니 다.등가:

for color in colors:
 for size in sizes:
실행 결 과 는:

[('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')]
순 서 를 바 꾸 면:

[(color, size) for color in colors for size in sizes]
등가:

for size in sizes:
 for color in colors:
실행 결 과 는 다 릅 니 다.두 번 째 요 소 를 관찰 합 니 다.

[('black', 'S'), ('white', 'S'), ('black', 'M'), ('white', 'M'), ('black', 'L'), ('white', 'L')]
생 성기 식
일반적으로 생 성 기 를 접 할 때 yield 키 워드 를 말 해 야 합 니 다.복잡 해 보이 지만 간단 합 니 다.생 성 기 는 목록 유도 와 같이 다른 유형의 서열 을 만 드 는 데 사 용 됩 니 다.예 를 들 어 원 그룹:

symbols = "abc"
codes = (symbol for symbol in symbols)
그것 의 문법 은 매우 간단 하 다.목록 에서 유도 하 는 중 괄호[]를 작은 괄호()로 바 꾸 면 된다.
문법 은 비슷 하지만 본질 적 으로 큰 차이 가 있 습 니 다.우 리 는 생 성기 표현 식 으로 피리 칼 적 을 실현 하고 어떤 변화 가 있 는 지 보 려 고 합 니 다.

colors = ["black", "white"]
sizes = ["S", "M", "L"]
tshirts = ((color, size) for color in colors for size in sizes)
실행 결 과 는:

<generator object <genexpr> at 0x000001FD57D2DB30>
generator object,결 과 는 생 성기 대상 입 니 다.생 성기 표현 식 은 매번 교체 할 때마다 요 소 를 하나씩 생산 하기 때문에 이 결 과 는 이미 만들어 진 원 그룹 이 아 닙 니 다.목록 추 도 는 새로운 목록 의 모든 요 소 를 한꺼번에 생 성 합 니 다.
생 성기 표현 식 결 과 를 반복 해서 출력 합 니 다:

for tshirt in tshirts:
 print(tshirt)

('black', 'S')
('white', 'S')
('black', 'M')
('white', 'M')
('black', 'L')
('white', 'L')
생 성기 표현 식 은 프로그램 성능 을 향상 시 킬 수 있 습 니 다.예 를 들 어 각각 1000 개의 요소 가 있 는 두 개의 목록 을 계산 하 는 피리 칼 적 을 계산 하려 면 생 성기 표현 식 은 for 순환 을 실행 하 는 비용 을 줄 일 수 있 습 니 다.즉,100 만 개의 요 소 를 포함 하 는 목록 입 니 다.
yield 역할 과 return 차이 가 많 지 않 습 니 다.나중에 말씀 드 리 겠 습 니 다.
Tips
이 소절 의 내용 은 내 가 《유창 한 파 이 썬》 을 보 았 을 때 기록 한 지식 이다.
  • Python 표준 라 이브 러 리 는 C 로 풍부 한 서열 유형 을 실현 했다.
  • 리스트 유도 란 a = [x for x in something] 이라는 표기 법 을 말한다.
  • 생 성기 표현 식 은 목록 밖의 다른 유형의 서열 을 만 드 는 데 사 용 됩 니 다.이 는 목록 에서 유도 하 는 차이 점 은 괄호 를 원 괄호 로 바 꾸 는 것 입 니 다.예 를 들 어 b = tuple(x for x in something).
  • array.array('I', x for x in something),array 구조 방법의 첫 번 째 매개 변 수 는 배열 의 숫자 저장 방식 을 지정 했다.
  • for tshirt in [c, s for c in colors for s in sizes],목록 추 도 는 이 목록 을 한꺼번에 생 성하 여 메모리 에 저장 하고 자원 을 점용 합 니 다.for tshirt in ('%s %s' for c in colors for s in sizes),생 성기 표현 식 은 순환 할 때 만 요 소 를 하나씩 생산 하여 추가 메모리 사용량 을 피하 고 for 순환 을 실행 하 는 비용 을 절약 합 니 다.
  • 작은 매듭
    본 고 는 먼저 서열 의 개념 을 소개 한 다음 에 Python 의 일반적인 소 작업 인 목록 추 도 를 보 여 주 었 고 마지막 으로 생 성기 표현 식 이라는 복잡 하고 간단 해 보 이 는 문법 을 이 끌 어 냈 다.목록 은 가 변 적 이다.가 변 적 이지 않 은 쌍둥이 형제,원조 가 있다.
    참고 자료:
    《유창 한 파 이 썬》
    이상 은 python 목록 유도 와 생 성기 표현 식 사용 에 대한 상세 한 내용 입 니 다.python 목록 유도 와 생 성기 표현 식 에 대한 자 료 는 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기