Python3 데이터 구조 지식 포인트에 대한 자세한 소개
이 글은 python에 대한 관련 지식을 제공합니다. 주로 숫자, 문자열, 목록, 튜플, 사전 등을 포함한 데이터 구조와 관련된 문제를 소개합니다. 모든 사람에게 도움이 되기를 바랍니다.
추천 학습: python 비디오 튜토리얼
Number Number
정수 유형(int) - 일반적으로 정수 또는 정수라고 하며 소수점이 없는 양수 또는 음수 정수입니다. Python3 정수에는 크기 제한이 없으며 Long 유형으로 사용할 수 있습니다. 부울은 정수의 하위 유형입니다.
부동 소수점 유형(float) - 부동 소수점 유형은 정수부와 소수부로 구성됩니다. 부동 소수점 유형은 과학 표기법(2.5e2 = 2.5 x 102 = 250)을 사용하여 표현할 수도 있습니다.
복수( ( 복소수 )) - 복소수는 실수부와 허수부로 구성되며, 이는 a + bj 또는 복소수(a,b)로 표현될 수 있습니다. 복소수의 실수부 a와 허수부 b는 모두 부동입니다. 포인트 유형.
숫자 유형 변환
int(x) x를 정수로 변환합니다.
float(x) x를 부동 소수점 숫자로 변환합니다.
complex(x) x를 복소수로 변환합니다. 실수 부분은 x이고 허수 부분은 0입니다.
complex(x, y) x와 y를 실수 부분이 x이고 허수 부분이 y인 복소수로 변환합니다. x와 y는 숫자 표현식입니다.
Number 연산
# + - * / %(取余) **(幂运算) # 整数除法中,除法 / 总是返回一个浮点数, # 如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符 // print(8 / 5) # 1.6 print(8 // 5) # 1 # 注意:// 得到的并不一定是整数类型的数,它与分母分子的数据类型有关系 print(8 // 5.0) # 1.0 # 使用 ** 操作来进行幂运算 print(5 ** 2) # 5的平方 25
String str
Query of string
index(): 하위 문자열 substr의 첫 번째 항목을 찾습니다. 검색된 하위 문자열이 없으면 ValueErrorrindex()Exception
rindex를 발생시킵니다. (): 하위 문자열 substr의 마지막 항목을 찾습니다. 검색 중인 하위 문자열이 없으면 ValueError() 예외가 발생합니다.
find(): 하위 문자열의 위치를 찾습니다. 검색 중인 하위 문자열이 존재하지 않으면 -1이 반환됩니다.
rfind(): 검색 중인 하위 문자열이 마지막으로 나타난 위치를 찾습니다.
s = 'hello, hello' print(s.index('lo')) # 3 print(s.find('lo')) # 3 print(s.find('k')) # -1 print(s.rindex('lo')) # 10 print(s.rfind('lo')) # 10
문자열 대소문자 변환
upper(): 문자열의 모든 문자를 대문자로 변환
lower(): 문자열의 모든 문자를 소문자로 변환
swapcase(): 문자열의 모든 대문자를 소문자로 변환하고 모든 소문자를 대문자로 변환
capitalize(): 첫 번째 문자를 대문자로 변환하고 나머지 문자를 소문자로 변환
title (): 각 단어의 첫 번째 문자를 대문자로 변환하고, 각 단어의 나머지 문자를 소문자로 변환합니다.
s = 'hello, Python' print(s.upper()) # HELLO, PYTHON print(s.lower()) # hello, python print(s.swapcase()) # HELLO, pYTHON print(s.capitalize()) # Hello, python print(s.title()) # Hello, Python
String alignment
center(): 가운데 정렬, 첫 번째 매개변수는 너비를 지정하고, 두 번째 매개변수는 필러를 지정합니다. 기본값은 공백입니다. 설정된 너비가 실제 너비보다 작으면 원래 문자열이 반환됩니다.
ljust(): 왼쪽 정렬, 첫 번째 매개변수는 너비를 지정합니다. 두 번째 매개변수 매개변수는 필러를 지정하며, 기본값은 공백입니다. 설정된 너비가 실제 너비보다 작으면 원래 문자열이 반환됩니다.
rjust(): 오른쪽 정렬, 첫 번째 매개변수는 너비를 지정하고, 두 번째 매개변수는 필러를 지정하며 기본값은 공백입니다. 설정된 너비가 실제 너비보다 작으면 원래 문자열이 반환됩니다.
zfill(): 오른쪽 정렬되고 왼쪽이 0으로 채워집니다. 메서드는 문자열 너비를 지정하는 데 사용되는 하나의 매개 변수만 받습니다. 지정된 너비가 문자열 길이보다 작거나 같으면 문자열 자체를 반환합니다
s = 'hello,Python' '''居中对齐''' print(s.center(20, '*')) # ****hello,Python**** '''左对齐 ''' print(s.ljust(20, '*')) # hello,Python******** print(s.ljust(5, '*')) # hello,Python '''右对齐''' print(s.rjust(20, '*')) # ********hello,Python '''右对齐,使用0进行填充''' print(s.zfill(20)) # 00000000hello,Python print('-1005'.zfill(8)) # -0001005
문자열 분할, 슬라이싱
Split
- split(): 문자열 왼쪽부터 분할
- rsplit(): 문자열 왼쪽부터 분할 오른쪽부터 분할 시작
- 기본 분할 문자는 공백이며, 반환 값
- sep 매개변수를 통해 문자열을 분할할 분할 문자를 지정합니다.
- maxsplit 매개변수를 통해 문자열을 분할할 때 최대 분할 수를 지정합니다. 최대 분할 수 이후에는 나머지 하위 문자열이 별도로 사용됩니다. a part
s = 'hello word Python' print(s.split()) # ['hello', 'word', 'Python'] s1 = 'hello|word|Python' print(s1.split(sep='|')) # ['hello', 'word', 'Python'] print(s1.split('|', 1)) # ['hello', 'word|Python'] # 左侧开始 print(s1.rsplit('|', 1)) # ['hello|word', 'Python'] # 右侧开始
slicing
s = 'hello,world' print(s[:5]) # hello 从索引0开始,到4结束 print(s[6:]) # world 从索引6开始,到最后一个元素 print(s[1:5:1]) # ello 从索引1开始,到4结束,步长为1 print(s[::2]) # hlowrd 从开始到结束,步长为2 print(s[::-1]) # dlrow,olleh 步长为负数,从最后一个元素(索引-1)开始,到第一个元素结束 print(s[-6::1]) # ,world 从索引-6开始,到最后一个结束
문자열 판단 관련
- isidentifier(): 지정된 문자열이 유효한지 확인 식별자
- isspace(): 지정된 문자열이 모두 공백 문자로 구성되어 있는지 확인(캐리지 리턴, 줄 바꿈, 가로 탭)
- isalpha(): 지정된 문자열이 완전히 문자로 구성되어 있는지 확인
- isdecimal( ): 지정된 문자열이 모두 십진수로 구성되어 있는지 확인
- isnumeric(): 지정된 문자열이 문자로만 구성되어 있는지 확인 문자열은 숫자로만 구성됩니다
- isalnum(): 지정된 문자열이 문자와 숫자로만 구성되어 있는지 확인
문자 문자열 기타 작업
문자열 교체
- replace()
s = 'hello,Python,Python,Python' print(s.replace('Python', 'Java')) # 默认全部替换 hello,Java,Java,Java print(s.replace('Python', 'Java', 2)) # 设置替换个数 hello,Java,Java,Python
문자열 연결
- join()
lst = ['hello', 'java', 'Python'] print(','.join(lst)) # hello,java,Python print('|'.join(lst)) # hello|java|Python
형식화된 문자열 출력
- % 자리 표시자: 출력 전 % 추가, 여러 매개변수에 괄호와 쉼표 사용
- %s 문자열
- %i 또는 %d 정수
- -%f 부동 소수점 숫자
- {} 자리 표시자: format() 메서드 호출
- f -string: {}
name = '张三' age = 20 print('我叫%s, 今年%d岁' % (name, age)) print('我叫{0}, 今年{1}岁,小名也叫{0}'.format(name, age)) print(f'我叫{name}, 今年{age}岁') # 我叫张三, 今年20岁 # 我叫张三, 今年20岁,小名也叫张三 # 我叫张三, 今年20岁
에 변수 쓰기 숫자의 너비와 정밀도 설정
# 设置数字的宽度和精度 '''%占位''' print('%10d' % 99) # 10表示宽度 print('%.3f' % 3.1415926) # .3f表示小数点后3位 print('%10.3f' % 3.1415926) # 同时设置宽度和精度 '''{}占位 需要使用:开始''' print('{:.3}'.format(3.1415926)) # .3表示3位有效数字 print('{:.3f}'.format(3.1415926)) # .3f表示小数点后3位 print('{:10.3f}'.format(3.1415926)) # .3f表示小数点后3位 # 99 #3.142 # 3.142 #3.14 #3.142 # 3.142
문자열 인코딩
s = '但愿人长久' # 编码 将字符串转换成byte(二进制)数据 print(s.encode(encoding='gbk')) #gbk,中文占用2个字节 print(s.encode(encoding='utf-8')) #utf-8,中文占用3个字节 # 解码 将byte(二进制)转换成字符串数据 # 编码与解码中,encoding方式需要一致 byte = s.encode(encoding='gbk') print(byte.decode(encoding='gbk')) # b'\xb5\xab\xd4\xb8\xc8\xcb\xb3\xa4\xbe\xc3' # b'\xe4\xbd\x86\xe6\x84\xbf\xe4\xba\xba\xe9\x95\xbf\xe4\xb9\x85' # 但愿人长久
List
목록의 특징
순서순
인덱스 매핑만 A 데이터
可以存储重复数据
任意数据类型混存
根据需要动态分配和回收内存
列表的创建
- []:使用中括号
- list():使用内置函数list()
- 列表生成式
语法格式:[i*i for i in range(i, 10)]
-
解释:i表示自定义变量,i*i表示列表元素的表达式,range(i, 10)表示可迭代对象
print([i * i for i in range(1, 10)])# [1, 4, 9, 16, 25, 36, 49, 64, 81]
로그인 후 복사
列表元素的查询
- 判断指定元素在列表中是否存在
in / not in
- 列表元素的遍历
for item in list: print(item)
- 查询元素索引
list.index(item)
- 获取元素
list = [1, 4, 9, 16, 25, 36, 49, 64, 81]print(list[3]) # 16print(list[3:6]) # [16, 25, 36]
列表元素的增加
append():在列表的末尾添加一个元素
extend():在列表的末尾至少添加一个元素
insert0:在列表的指定位置添加一个元素
切片:在列表的指定位置添加至少一个元素
列表元素的删除
rerove():一次删除一个元素,
重复元素只删除第一个,
元素不存在抛出ValceError异常pop():删除一个指定索引位置上的元素,
指定索引不存在抛出IndexError异常,
不指定索引,删除列表中最后一个元素切片:一次至少删除一个元素
clear0:清空列表
del:删除列表
列表元素的排序
- sort(),列表中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse= True,进行降序排序,是对原列表的操作。
list.sort()
- sorted(),可以指定reverse—True,进行降序排序,原列表不发生改变,产生新的列表。
sorted(list)
知识点总结
元组 tuple
元组的特点
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号
元组的创建
- 直接使用小括号(), 小括号可以省略
t = ('Python', 'hello', 90)
- 使用内置函数tuple(), 若有多个元素必须加小括号
tuple(('Python', 'hello', 90))
- 只包含一个元素的元组,需要使用小括号和逗号
t = (10,)
知识点总结
字典 dict
字典的特点
- 以键值对的方式存储,key唯一
- key必须是不可变对象
- 字典是可变序列
- 字典是无序序列 (注意:自Python3.7本后,dict 对象的插入顺序保留性质已被声明为 Python 语言规范的正式部分。即,Python3.7之后,字典是有序序列,顺序为字典的插入顺序)
字典的创建
- {}:使用花括号
- 使用内置函数dict()
- zip():字典生成式
items = ['fruits', 'Books', 'Others'] prices = [12, 36, 44] d = {item.upper(): price for item, price in zip(items, prices)} print(d) # {'FRUITS': 12, 'BOOKS': 36, 'OTHERS': 44}
字典元素的获取
- []:[]取值
scores[‘张三’],若key不存在,抛出keyError异常 - get():get()方法取值,若key不存在,返回None,还可以设置默认返回值
字典元素的新增
user = {"id": 1, "name": "zhangsan"} user["age"] = 25 print(user) # {'id': 1, 'name': 'zhangsan', 'age': 25}
字典元素的修改
user = {"id": 1, "name": "zhangsan", "age": 25} user["age"] = 18 print(user) # {'id': 1, 'name': 'zhangsan', 'age': 18}
字典元素的删除
- del :删除指定的键值对或者删除字典
user = {"id": 1, "name": "zhangsan"}del user["id"]print(user) # {'name': 'zhangsan'}del user
- claer():清空字典中的元素
user = {"id": 1, "name": "zhangsan"}user.clear()print(user) # {}
获取字典视图
- keys():获取字典中所有key
- values():获取字典中所有value
- items():获取字典中所有key,value键值对
字典元素的遍历
- 遍历key,再通过key获取value
scores = {'张三': 100, '李四': 95, '王五': 88}for name in scores: print(name, scores[name])
- 通过items()方法,同时遍历key,value
scores = {'张三': 100, '李四': 95, '王五': 88}for name, score in scores.items(): print(name, score)
知识点总结
集合 set
集合的特点
- 集合是可变序列
- 集合是没有value的字典
- 集合中元素不重复
- 集合中元素是无序的
集合的创建
- {}
s = {'Python', 'hello', 90}
- 内置函数set()
print(set("Python"))print(set(range(1,6)))print(set([3, 4, 7]))print(set((3, 2, 0)))print(set({"a", "b", "c"}))# 定义空集合:set()print(set())
- 集合生成式
print({i * i for i in range(1, 10)})# {64, 1, 4, 36, 9, 16, 49, 81, 25}
集合的操作
- 集合元素的判断操作
- in / not in
- 集合元素的新增操作
- add():一次添中一个元素
- update(:)添加多个元素
- 集合元素的删除操作
- remove():删除一个指定元素,如果指定的元素不存在抛出KeyError
- discard(:)删除一个指定元素,如果指定的元素不存在不抛异常
- pop():随机删除一个元素
- clear():清空集合
集合间的关系
两个集合是否相等:可以使用运算符 == 或 != 进行判断,只要元素相同就相等
一个集合是否是另一个集合的子集:issubset()
s1 = {10, 20, 30, 40, 50, 60}s2 = {10, 30, 40}s3 = {10, 70}print(s2.issubset(s1)) # Trueprint(s3.issubset(s1)) # False
- 一个集合是否是另一个集合的超集:issuperset()
print(s1.issuperset(s2)) # Trueprint(s1.issuperset(s3)) # False
- 两个集合是否无交集:isdisjoint()
s1 = {10, 20, 30, 40, 50, 60}s2 = {10, 30, 40}s3 = {20, 70}print(s1.isdisjoint(s2)) # False 有交集print(s3.isdisjoint(s2)) # True 无交集
集合的数学操作
- 交集: intersection() 与 &等价,两个集合的交集
s1 = {10, 20, 30, 40}s2 = {20, 30, 40, 50, 60}print(s1.intersection(s2)) # {40, 20, 30}print(s1 & s2) # {40, 20, 30}
- 并集: union() 与 | 等价,两个集合的并集
print(s1.union(s2)) # {40, 10, 50, 20, 60, 30}print(s1 | s2) # {40, 10, 50, 20, 60, 30}
- 差集: difference() 与 - 等价
print(s2.difference(s1)) # {50, 60}print(s2 - s1) # {50, 60}
- 对称差集:symmetric_difference() 与 ^ 等价
print(s2.symmetric_difference(s1)) # {10, 50, 60}print(s2 ^ s1) # {10, 50, 60}
知识点总结
列表、元组、字典、集合总结
推荐学习:python教程
위 내용은 Python3 데이터 구조 지식 포인트에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











대부분의 텍스트 편집기를 사용하여 XML 파일을여십시오. 보다 직관적 인 트리 디스플레이가 필요한 경우 Oxygen XML 편집기 또는 XMLSPy와 같은 XML 편집기를 사용할 수 있습니다. 프로그램에서 XML 데이터를 처리하는 경우 프로그래밍 언어 (예 : Python) 및 XML 라이브러 (예 : XML.etree.elementtree)를 사용하여 구문 분석해야합니다.

XML 미화는 합리적인 압입, 라인 브레이크 및 태그 구성을 포함하여 기본적으로 가독성을 향상시키고 있습니다. 원칙은 XML 트리를 가로 지르고 레벨에 따라 들여 쓰기를 추가하고 텍스트가 포함 된 빈 태그와 태그를 처리하는 것입니다. Python의 xml.etree.elementtree 라이브러리는 위의 미화 프로세스를 구현할 수있는 편리한 Pretty_XML () 기능을 제공합니다.

XML 컨텐츠를 수정하려면 프로그래밍이 필요합니다. 대상 노드를 추가, 삭제, 수정 및 확인하려면 정확한 찾기가 필요하기 때문입니다. 프로그래밍 언어에는 XML을 처리하기위한 해당 라이브러리가 있으며 운영 데이터베이스와 같이 안전하고 효율적이며 제어 가능한 작업을 수행 할 수있는 API를 제공합니다.

모바일에는 간단하고 직접 무료 XML에서 PDF 툴이 없습니다. 필요한 데이터 시각화 프로세스에는 복잡한 데이터 이해 및 렌더링이 포함되며 시장에있는 소위 "무료"도구의 대부분은 경험이 좋지 않습니다. 컴퓨터 측 도구를 사용하거나 클라우드 서비스를 사용하거나보다 신뢰할 수있는 전환 효과를 얻기 위해 앱을 개발하는 것이 좋습니다.

모바일 XML에서 PDF의 속도는 다음 요인에 따라 다릅니다. XML 구조의 복잡성. 모바일 하드웨어 구성 변환 방법 (라이브러리, 알고리즘) 코드 품질 최적화 방법 (효율적인 라이브러리 선택, 알고리즘 최적화, 캐시 데이터 및 다중 스레딩 사용). 전반적으로 절대적인 답변은 없으며 특정 상황에 따라 최적화해야합니다.

휴대 전화에서 XML을 PDF로 직접 변환하는 것은 쉽지 않지만 클라우드 서비스를 통해 달성 할 수 있습니다. 가벼운 모바일 앱을 사용하여 XML 파일을 업로드하고 생성 된 PDF를 수신하고 클라우드 API로 변환하는 것이 좋습니다. Cloud API는 Serverless Computing Services를 사용하고 올바른 플랫폼을 선택하는 것이 중요합니다. XML 구문 분석 및 PDF 생성을 처리 할 때 복잡성, 오류 처리, 보안 및 최적화 전략을 고려해야합니다. 전체 프로세스에는 프론트 엔드 앱과 백엔드 API가 함께 작동해야하며 다양한 기술에 대한 이해가 필요합니다.

XML을 PDF로 직접 변환하는 응용 프로그램은 근본적으로 다른 두 형식이므로 찾을 수 없습니다. XML은 데이터를 저장하는 데 사용되는 반면 PDF는 문서를 표시하는 데 사용됩니다. 변환을 완료하려면 Python 및 ReportLab과 같은 프로그래밍 언어 및 라이브러리를 사용하여 XML 데이터를 구문 분석하고 PDF 문서를 생성 할 수 있습니다.

XML 서식 도구는 규칙에 따라 코드를 입력하여 가독성과 이해를 향상시킬 수 있습니다. 도구를 선택할 때는 사용자 정의 기능, 특수 상황 처리, 성능 및 사용 편의성에주의하십시오. 일반적으로 사용되는 도구 유형에는 온라인 도구, IDE 플러그인 및 명령 줄 도구가 포함됩니다.
