>백엔드 개발 >파이썬 튜토리얼 >Python의 내장 데이터 구조에 대한 자세한 설명

Python의 내장 데이터 구조에 대한 자세한 설명

不言
不言원래의
2018-04-27 15:36:532146검색

이 글은 Python에 내장된 5가지 데이터 구조와 동작 예제를 요약해서 소개하고 있으니 필요한 친구들이 참고하면 됩니다.

1. 리스트

리스트는 일련의 항목을 저장할 수 있는 데이터 구조입니다. 목록의 항목은 쉼표로 구분하고 한 쌍의 대괄호로 묶어 이것이 목록임을 나타내야 합니다. 다음 예는 목록의 몇 가지 기본 작업을 보여주는 데 사용됩니다.

# 定义一个 list 对象 class_list:
class_list = ['Michael', 'Bob', 'Tracy']
# 获得一个 class_list 的长度
print 'class have', len(class_list), 'students'
# 访问class_list中的对象
print 'The 3rd student in class is', class_list[2]
# 往 class_list 中插入对象
class_list.append('Paul')
# 从 class_list 中删除一个项目
del class_list[0]
# 对 class_list 进行排序
class_list.sort()
# 遍历整个class_list中的项目
print 'These students are :',
for student in class_list:
  print student,

출력 결과는 다음과 같습니다.

class have 3 Students
세 번째 학생은 Tracy입니다.
이 학생은 다음과 같습니다. Bob Paul Tracy

에 대한 몇 가지 사항 위 코드는 다음 사항에 유의해야 합니다.

class_list에 모든 유형의 개체를 추가할 수 있습니다. 즉, 목록의 항목이 동일한 유형일 필요는 없습니다. class_list에 목록을 삽입할 수도 있습니다.
정렬 기능은 복사본을 반환하는 것이 아니라 자체적으로 작동하는데, 이는 문자열을 수정할 수 없기 때문에 문자열 유형과 다릅니다.
인쇄 함수의 end 키워드 매개변수는 입력이 완료된 후 출력을 지정하는 데 사용됩니다. 기본값은 개행 문자를 대체하기 위해 공백 문자를 사용합니다.

2. Tuple

tuple은 사용법이나 개념이 list와 크게 다르지 않습니다. 즉, 튜플이 정의되면 수정할 수 없습니다. 즉, 객체를 추가하거나 삭제할 수 없으며 튜플의 객체도 수정할 수 없습니다.

튜플의 항목도 쉼표로 구분해야 하며 항목을 괄호로 묶어서 튜플임을 나타내야 합니다. 이 괄호는 선택 사항입니다. 즉, 튜플은 다음 두 가지 방법으로 정의할 수 있습니다.

t = 'Adam', 'Lisa', 'Bart'
t = ('Adam', 'Lisa', 'Bart')
그러나 한 쌍의 괄호를 생략하는 것이 반드시 좋은 습관은 아닙니다. 또한 튜플에 항목이 하나만 있는 경우 첫 번째 항목 뒤에 쉼표가 있어야 합니다. 이 경우 t = ('Adam',) 은 다음과 같이 정의해야 합니다. 이는 이상한 제약처럼 보일 수 있지만 쉼표가 없으면 괄호 없이 정의된 튜플은 t = 'Adam'이 되며 이는 분명히 모호합니다.

3. 사전

사전은 키-값 쌍의 집합으로 볼 수 있습니다. 키는 고유해야 하며 각 키는 값과 연결되어 있습니다. 키는 불변 객체(예: 튜플, 숫자 유형, 문자열)여야 합니다. 또한 사전의 키-값 쌍은 어떤 방식으로도 정렬되지 않습니다.

사전의 정의는 d={key1 : value1, key2 : value2, key3 : value3} 형식이어야 합니다. 키와 값은 콜론으로 구분되고, 키-값 쌍은 쉼표로 구분되며, 모든 키-값 쌍은 중괄호로 묶입니다. 몇 가지 기본 연산은 다음과 같습니다.

# 字典的定义
d = {
  'Adam': 95,
  'Lisa': 85,
  'Bart': 59
}
# 通过键来获取值
print "Adam's score is", d['Adam']
# 删除一个键值对
del d['Bart']
# 遍历字典
for name, score in d.items():
  print '{0} is {1}'.format(name, score)
# 往字典中增加一个键值对
d['Paul'] = 72
# 判断字典中是否存在某键,也可以用 if ab.has_key('Lisa')
if 'Lisa' in d:
  print "Lisa's address is", d['Lisa']

출력 결과는 다음과 같습니다.

Adam's score is 95
Lisa is 85
Adam is 95
Lisa's address is 85

IV. Sequences

위에 소개된 세 가지 내장 데이터 구조는 모두 시퀀스이며, 인덱스 연산은 시퀀스의 기본 연산입니다. . 시퀀스의 개체는 아래 첨자 작업을 통해 직접 액세스할 수 있습니다. 위에서 첨자 작업을 설명했지만 큐와 튜플에는 숫자가 첨자되고 사전에는 키워드가 첨자됩니다.

수열의 첨자는 0부터 시작합니다. 위의 예에서는 첨자만 양수입니다. 실제로 첨자는 -1,-2,-3...과 같이 음수일 수도 있습니다. 음수 아래 첨자는 반대 방향의 위치를 ​​나타냅니다. 예를 들어 class_list[-1]은 class_list의 마지막 항목을 반환합니다.

이 시퀀스는 음수 첨자뿐만 아니라 이중 첨자도 지원합니다. 이 이중 첨자 쌍은 간격을 나타냅니다. 예를 들어, class_list[0:3]은 class_list의 아래 첨자 1에서 아래 첨자 3까지의 하위 시퀀스 복사본을 반환합니다. 이 구간은 반 닫힌 구간과 반 열린 구간의 쌍입니다. 이 작업을 슬라이싱 작업이라고 합니다. 슬라이싱 작업의 두 번째 인덱스가 시퀀스의 범위를 초과하는 경우 슬라이싱 작업은 시퀀스의 끝에서 종료됩니다. 슬라이싱 작업의 두 첨자는 모두 기본값을 가지며, 첫 번째의 기본값은 0이고 두 번째의 크기는 시퀀스의 길이입니다.

슬라이싱 작업에 대한 세 번째 매개변수를 제공할 수도 있습니다. 세 번째 매개변수는 슬라이싱 작업의 단계 크기를 나타냅니다. 단계 크기는 name[0:10:3]과 같은 항목 사이의 거리를 나타냅니다. 반환되는 것은 name의 아래 첨자 0, 3, 6, 9로 구성된 하위 시퀀스입니다.

5. 세트

세트는 정렬되지 않은 단순한 개체의 모음입니다. 집합은 객체가 존재하는 순서나 나타나는 횟수에 관계없이 객체가 컬렉션에 존재하는지 여부에만 관심이 있는 경우에 적합합니다. 기본 기능: 집합의 구성원인지 여부, 집합이 다른 집합의 부분 집합인지 여부, 두 집합의 교집합 구하기 등을 결정합니다. 예:

s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
# 判断对象是否在集合中
if 'Bart' in s:
  print "Bart is in ?", 'Bart' in s
# 使用copy函数来拷贝一个set
sc = s.copy()
# 往集合中添加对象
sc.add('Bill')
# 从集合中删除对象
sc.remove('Adam')
# 求两个集合的交集,也可以使用 s.intersection(sc)
print s & sc

출력 결과:

Bart is in ? True
set(['Lisa', 'Paul', 'Bart'])

관련 권장 사항:

로컬 변수와 전역 변수에서 시작하는 Python의 변수 범위에 대한 종합 분석

위 내용은 Python의 내장 데이터 구조에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.