python 시퀀스 를 빠르게 복사 하 는 방법
서열 을 하나의 정수 로 곱 하면 새로운 서열 이 생 긴 다.이 새 서열 은 원본 서열 이 정수 부 를 복사 한 후에 다시 연결 한 결과 이다.
l=[1,2,3]
l2=l * 3
logging.info('l2 -> %s',l2)
l3=5 * 'deniro'
logging.info('l3 -> %s',l3)
실행 결과:INFO - l2 -> [1, 2, 3, 1, 2, 3, 1, 2, 3]
INFO - l3 -> denirodenirodenirodenirodeniro
*복제 문법 은 기 존의 조작 대상 을 수정 하지 않 고 새로운 서열 을 구축한다.
2 리스트 함정
a*n 문법 에서 a 는 목록 이 고 n 은 복사 할 목록 수 입 니 다.a 목록 의 요소 가 기본 형식 이 라면 문제 없습니다.그러나 a 목록 의 요소 가 대상 의 인용 이 라면 복 사 된 목록 의 인용 은 같은 인용 을 가리 키 고 있 습 니 다.
Luciano Ramalho 는 우물 바둑 의 예 를 들 었 다.
영어 이름 은 틱-택-토(Tic-Tac-Toe)로 3*3 칸 에서 진행 되 는 구슬 치기 게임 으로 오목 과 유사 하 며,바둑판 은 일반적으로 테 두 리 를 그리 지 않 고 격자 선 이 우물 글자 로 배열 되 어 있어 이름 을 얻 었 다.게임 에 필요 한 도 구 는 종이 와 펜 에 불과 하 며,그 다음 에 각각 O 와 X 를 대표 하 는 두 명의 놀이 꾼 이 돌아 가면 서 칸 에 표 시 를 남기 고(일반적으로 선 수 는 X),임의의 세 개의 표시 가 하나의 직선 을 이 루 면 승리 한다.
(1)오류 예시 1
weird_board = [['_'] * 3] * 3
logging.info('weird_board -> %s', weird_board)
weird_board[1][2] = 'X'
logging.info('weird_board -> %s', weird_board)
실행 결과:INFO - weird_board -> [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']]
INFO - weird_board -> [['_', '_', 'X'], ['_', '_', 'X'], ['_', '_', 'X']]
코드 에서[1][2]위치의 값 만 수 정 했 지만 세 군데 에 영향 을 미 친 것 을 볼 수 있다.이것 은 이 세 곳 이 사실은 같은 인용 을 가리 키 고 있다 는 것 을 설명 한다.
(2)오류 예시 2
이 예제 가 저 지 른 잘못 은 이전 예제 와 마찬가지 로 같은 대상 을 같은 게임 판 에 추가 하 는 것 이다(board).
row = ['_'] * 3
board = []
for i in range(3):
board.append(row)
logging.info('board -> %s', board)
board[1][2] = 'X'
logging.info('board -> %s', board)
실행 결과:INFO - board -> [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']]
INFO - board -> [['_', '_', 'X'], ['_', '_', 'X'], ['_', '_', 'X']]
(3)정확 한 예시
예시 2 를 개조 하면 상술 한 문 제 를 피 할 수 있다.
board = []
for i in range(3):
row = ['_'] * 3
board.append(row)
logging.info('board -> %s', board)
board[1][2] = 'X'
logging.info('board -> %s', board)
실행 결과:INFO - board -> [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']]
INFO - board -> [['_', '_', '_'], ['_', '_', 'X'], ['_', '_', '_']]
여기 row=['']*3 for 순환 에 넣 으 면 순환 할 때마다 row 를 새로 만 들 고 게임 판 에 넣 습 니 다.이렇게 게임 판 의 모든 단원 격 은 독립 적 이 고 서로 영향 을 주지 않 는 다.
목록 유도 방법 을 이용 하여 예시 코드 를 간소화 할 수 있다.
board = [['_'] * 3 for i in range(3)]
logging.info('board -> %s', board)
board[1][2] = 'X'
logging.info('board -> %s', board)
이상 은 python 이 시퀀스 를 어떻게 빠르게 복사 하 는 지 에 대한 상세 한 내용 입 니 다.python 복사 시퀀스 에 관 한 자 료 는 다른 관련 글 에 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.