5장: 파이썬 기본 데이터 구조 - 목록

시퀀스는 Python에서 가장 기본적인 데이터 구조입니다.

시퀀스의 각 값에는 인덱스라고 하는 해당 위치 값이 있으며 첫 번째 인덱스는 0, 두 번째 인덱스는 1 등입니다.

Python에는 시퀀스에 대한 6가지 기본 제공 유형이 있지만 가장 일반적인 유형은 목록과 튜플입니다.

목록에서 수행할 수 있는 작업에는 인덱싱, 슬라이싱, 추가, 곱하기 및 구성원 확인이 포함됩니다.

또한 Python에는 시퀀스의 길이를 결정하고 가장 큰 요소와 가장 작은 요소를 결정하는 내장 메서드가 있습니다.

목록은 가장 일반적으로 사용되는 Python 데이터 유형이며 대괄호로 묶인 쉼표로 구분된 값으로 나타날 수 있습니다.

목록의 데이터 항목은 동일한 유형을 가질 필요가 없습니다.

1. 리스트 생성

  • 목록이 무엇입니까

    • 시퀀스는 파이썬에서 가장 기본적인 데이터 구조 입니다 .
  • 목록이 왜 필요한가요?

    • 변수는 하나의 요소를 저장할 수 있고 목록은 N개 이상의 요소를 저장할 수 있는 "큰 컨테이너" 이며 프로그램은 이러한 데이터를 전체적으로 쉽게 처리할 수 있습니다.
  • 목록은 다른 언어의 배열과 동일합니다.

  • 목록의 특징

    • 순서대로 정렬된 목록 요소
    • 하나의 데이터만 인덱스 매핑
    • 목록은 중복 데이터를 저장할 수 있습니다.
    • 모든 데이터 유형의 혼합 스토리지
    • 필요에 따라 동적으로 메모리 할당 및 회수
  • 목록 다이어그램

    • 정방향 인덱스

    이미지-20220711222653856

    • 역지수

    이미지-20220711222807137

  • 목록 생성

    목록을 만들려면 쉼표로 구분된 여러 데이터 항목을 대괄호로 묶으 십시오.

    • 대괄호 사용
    • 내장 함수 list() 호출
  • 코드 데모

list = ["hello", "Python", "World"]
print(id(list))
print(type(list))
print(list)

list2=list(["hello",87,"YWHh"])
print(list2)

2. 목록 조회 작업

2.1 목록에서 지정된 요소의 인덱스 가져오기

  • 목록에 N개의 동일한 요소가 있음을 알고 있으면 동일한 요소의 첫 번째 요소만 반환합니다.
  • 쿼리된 요소가 목록에 없으면 ValueError가 발생합니다.
  • 지정된 시작과 중지 사이를 쿼리할 수도 있습니다.
lst = ["hello", "world", 98, "hello"]
# 如果列表中有相同元素,只返回列表中的第一个元素
print(lst.index("hello"))
# print(lst.index("1111"))  元素不存在
# 指定范围查找
print(lst.index("hello", 1, 4))

2.2 목록에서 단일 요소 가져오기

  • 0에서 N-1까지 정방향 인덱스
  • -N에서 -1로 역 인덱스
  • 지정된 색인이 존재하지 않으며 IndexError가 발생합니다.
lst = ["hello", "world", 98, "hello"]
# 正向索引:获取索引为2的元素
print(lst[2])
# 逆向索引:获取索引为-2的元素
print(lst[-2])
# 索引不存在
# print(lst[-99])

2.3 목록에서 여러 요소 가져오기

  • 문법적 형식
列表名[start :	stop : step ]
  • 슬라이스 작업
슬라이스 작업 말씨 설명하다
슬라이싱한 결과 원본 목록 조각의 복사본
슬라이스 범위 [ 시작 멈춤 ] 왼쪽 닫힘 오른쪽 열림
단계 크기의 기본값은 1입니다. [ 시작 : 중지 ] 또는 [ 시작 : 중지 : ]
단계가 양수일 때 처음부터 시작하여 뒤로 자릅니다. [ : 정지 : 단계] 슬라이스의 첫 번째 요소는 기본적으로 목록의 첫 번째 요소입니다.
[ 시작 : : 단계] 슬라이스의 마지막 요소는 기본적으로 목록의 마지막 요소입니다.
단계가 음수일 때 처음 부터 잘라 [ : 정지 : 단계] 슬라이스의 첫 번째 요소는 기본적으로 목록의 마지막 요소입니다.
[ 시작 : : 단계] 슬라이스의 마지막 요소는 기본적으로 목록의 첫 번째 요소입니다.
  • 코드 데모
# 切片操作
lst = [10, 20, 30, 40, 50, 60, 70, 80]
# 打印输出:start=1,stop=6,step=1,产生新列表
print(lst[1:6:1])
print("原列表",id(lst))
print("切列表",id(lst[1:6:1]))
# 默认步长为1
print(lst[1:6])
print(lst[1:6:])
# 正向切片
print(lst[:6:2])
print(lst[1::2])
# 逆向切片
lst = [10, 20, 30, 40, 50, 60, 70, 80]
print(lst[::-1])
print(lst[6:1:-1])
print(lst[:1:-1])
print(lst[6::-1])

2.4 지정된 요소가 목록에 있는지 확인

  • 문법적 형식
元素	in	列表名
元素	not in	列表名
  • 코드 데모
lst = [10, 20, "Python", "Hello"]
print(10 in lst)
print(100 in lst)
print("Hello" in lst)
print("java" in lst)

2.5 목록 요소 순회

  • 문법적 형식
for 迭代变量	in	列表名	:
	操作
  • 코드 데모
lst = [10, 20, "Python", "Hello"]
# 将列表元素依次输出
for i in lst:
    print(i)

3. 리스트 요소 연산 추가

  • 작업 방법 추가
방법/기타 작업 설명
추가() 새 개체를 생성하지 않고 목록 끝에 요소를 추가합니다.
연장하다() 목록 끝에 하나 이상의 요소 추가
끼워 넣다() 목록의 아무 곳에나 요소 추가
일부분 목록의 아무 곳에나 하나 이상의 요소를 추가합니다.
  • 코드 데모
# append():向列表的末尾添加一个元素—最常用
lst = [10, 20, 30]
print("添加元素之前:", id(lst), lst)
lst.append(100)
print("添加元素之后:", id(lst), lst)

lst2 = ["hello", "world"]
# 将lst2作为一个元素添加到列表的末尾
lst.append(lst2)
print(lst)
# 将lst2元素依次添加到列表末尾
lst.extend(lst2)
print(lst)

# 在任意位置上添加一个元素
lst.insert(1, 90)
print(lst)

lst3 = [30, 40, "hello", "python"]
# 切片:在任意位置上添加N多个元素
lst[1::]=lst3
print(lst)

넷째, 목록 요소의 삭제 작업

  • 작업 방법 추가
방법/기타 작업 설명
제거하다() 목록에서 요소 제거, 중복 요소가 있으면 첫 번째 요소만 제거, 목록 요소가 없으면 ValueError 예외 발생
팝() 인덱스에 따라 요소를 제거하고 인덱스가 없으면 IndexError 예외가 발생합니다.
일부분 하나 이상의 요소를 삭제하면 새 목록 개체가 생성됩니다.
분명한() 목록 지우기
목록 삭제
  • 코드 데모
lst = [10, 20, 30, 40, 50, 60, 30]
print("原列表:", lst)
# remove():从列表中移除一个元素,如果有重复元素,只移除第一个
lst.remove(30)
print("原列表:", lst)
# 列表元素不存在,ValueError抛出异常
# lst.remove(100)

# pop():根据索引删除元素
lst.pop(2)
print(lst)
# 如果指定的索引位置不存在,将抛出IndexError异常
# lst.pop(50)
# 不写参数,会将列表中的最后一个元素删除
lst.pop()
print(lst)

# 切片:删除至少一个元素,将会产生一个新的列表对象
new_list = lst[1:3]
print("原列表:", id(lst), lst)
print("新列表:", id(new_list), new_list)
# 不产生新的列表对象,而是删除原列表中的内容
lst[1:3] = []
print(lst)

# clear():清除列表中的所有元素
lst.clear()
print(lst)

# del语句:删除列表
del lst

다섯, 목록 요소의 수정 작업

  • 지정된 인덱스의 요소에 새 값을 할당합니다.
  • 지정된 슬라이스에 새 값을 할당합니다.
  • 코드 데모
list = [10, 20, 30, 40]
# 一次修改一个值
list[2] = 100
print(list)  # [10, 20, 100, 40]
# 切片修改
list[1:3:] = [22, 33]
print(list)

6. 목록 요소의 정렬 작업

  • 정렬 작업 방법
방법/기타 작업 설명
종류() sort() 메서드를 호출하면 목록의 모든 요소가 기본적으로 내림차순 으로 정렬됩니다. reverse=True를 지정하여 내림차순 으로 정렬하고 새 목록 객체를 생성하지 않고 원래 목록에서 작동
할 수 있습니다.
정렬() 내장 함수 sorted()를 호출하여
reserve=True를 지정하여 내림차순으로 정렬하면 원래 목록이 변경되지 않고 새 목록 객체가 생성됩니다.
  • 코드 데모
lst = [20, 40, 10, 98, 54]
print('排序前列表', lst)  # 排序前列表 [20, 40, 10, 98, 54]
# 开始排序,调用列表对象的sort方法,默认是升序
lst.sort()
print('排序后列表', lst)  # 排序后列表 [10, 20, 40, 54, 98]
lst.sort(reverse=True)
print('新排序列表', lst)  # 新排序列表 [98, 54, 40, 20, 10]
lst.sort(reverse=False)
print('新排序列表', lst)  # 新排序列表 [10, 20, 40, 54, 98]

# 使用内置函数sorted()对列表进行排序,将产生一个新的列表对象
lst2 = sorted(lst)
print(lst2)  # [10, 20, 40, 54, 98]
lst2 = sorted(lst, reverse=True)
print(lst2)  # [98, 54, 40, 20, 10]

일곱, 목록 생성

"목록 생성 공식"이라고 하는 목록 생성 공식

  • 문법 구조
[ 表示列表元素的表达式 for 自定义变量 in 可迭代对象 ]
[ i*i for i in range(1,10) ]
  • 코드 데모
lst = [i for i in range(1, 10)]
print(lst)
lst2 = [i * i for i in range(1, 10)]
print(lst2)

추천

출처blog.csdn.net/polaris3012/article/details/130497453