메모리 할당 문제에 대하여
새로 정의된 문자열 변수는 기본적으로 새로운 메모리 공간을 엽니다
목록, 튜플 또는 사전과 같은 다른 유사한 인덱스는 실제로 값을 할당할 뿐입니다. 변수 이름은 아래와 같이 동일한 주소 공간을 가리킵니다.
1 ##문자열의 새로운 정의는 새로운 메모리 공간을 엽니다 2 >>> str1 = 'hoho' 3 >> ;> str2 = str1 4 >>> id(str1),id(str2) # 메모리 객체 주소를 보고, 메모리 주소를 관찰합니다. 즉, str2가 메모리 공간 5를 새로 열었습니다. (140297199501752) #여기서 같은 내용이 나타나는 이유는 Python의 내부 메커니즘 때문입니다. 문자열이 충분히 크면 다를 것이므로 걱정하지 마세요. ' 7 >>> str1 8 'hoho' 9 >> str210 'heihei'11 >>> id(str1),id(str2) # 메모리 주소가 변경되었는지 확인하세요. 140297199501752, 140297214622552) 13 14 ##목록, Tuple과 같은 비문자 장치는 사전 할당 정의 후에 실제로 새 변수 이름(레이블로 이해될 수 있음)을 동일한 메모리 주소로 가리키고 사전을 예를 들어 아래와 같습니다. 15 >>> dic1 = {'name':'hoho' }16 >>> dic2 = dic117 >>> id(dic1),id(dic2)18 140297199190088, 140297199190088)19 >>> dic1 = {'name':'hoho'} 20 >>> dic2 = dic121 >>> 메모리 객체 주소가 동일한 것을 확인하여 dic2를 수정합니다. 실제로 dic1도 수정되었습니다. 22 (140297199191752)23 >>> dic2['name'] = 'heihei'24 > >> dic225 {'name': 'heihei'}26 >>> dic127 {'name': ' heihei'}
목록 복사 문제 , 튜플 및 딕셔너리(얕은 복사 및 깊은 복사 복사 모듈 사용)
1. 목록 및 튜플 슬라이싱을 사용하여 얕은 복사를 구현하거나 복사 모듈을 사용하여 얕은 복사(사전 포함)를 사용할 수 있습니다.
2. copy.deepcopy()를 사용하여 전체 복사
1 >>> import copy 2 >>> >> list1 4 >>> list2[0] = 2 #list2가 그에 따라 변경됩니다. 5 >> list1 6 [2, 2] 7 >> = list1[:] #복잡성이 낮음, 배열 슬라이싱을 사용하여 얕은 복사 수행 8 >>> list3 = copy.copy(list1) 9 >>> list3) #여기서 주소 공간이 다른 것을 볼 수 있습니다10 (140297199250696, 140297199247560)11 >>>
12 >>> list4 = [1,[2]] ##복잡한 구조 깊은 복사를 사용해야 합니다 13 >>> list5 = list4[:]14 >>> list515 [1, [2 ]]16 >>> >> list418 [1, [6]] # 여기에서 내부 목록이 복사되지 않았으며 list4도 복사되지 않았음을 알 수 있습니다. 19 >>> list6 = copy.deepcopy(list4) #깊은 복사 여기서는 20 >>> list6[1][0] = 821 >>> list622 [1, [ 8]]23 >>> list424 [1, [6]] #여기 복사된 내용을 확인할 수 있습니다
자주 사용하는 내장 함수
파이썬에는 내장 함수가 많다는 것만 기억하세요. 사용한 함수도 있지만 어떤 내장 함수가 있는지 확인하는 방법도 알 수 있습니다. 함수의 도움말
보통 3단계로 나누어집니다
유형(변수) -- -> 변수가 속한 클래스를 가져옵니다.
dir(클래스 이름) ---> 클래스에서 사용할 수 있는 메서드가 무엇인지 확인합니다. 그 중 __abs__와 같이 이중 밑줄로 시작하는 메서드는 일반적으로 다음과 같습니다. as: __abs__ <=> abs()
help (클래스 이름 또는 함수 이름) ---> 클래스 아래에서 함수 사용법을 보거나
플라스틱
1 >>> s,y = divmod(7,3) ## divmod는 데이터를 반환하며 값은 (몫, 나머지)입니다. 페이징 2에 사용됨 s,y3 (2, 1)4 >>> a = -25 >>abs(-2) #abs는 절대값 6 27 > >>len (str(-2)) #속도 길이 8 2 가져오기
코드 보기
부동 소수점
1 >> a = 7.02 >>> divmod(a,3)3 (2.0, 1.0)4 >>a = 7.2355 >> (2) #6 7.247로 반올림 >>> a.__trunc__() #8 7로 반올림
코드 보기
문자열
1 >>> str1 = '이것은 문자열입니다' 2 >>> str1의 'is'입니다 #회원 판단 3 참 4 >>> str1[1:3] # 슬라이싱 연산 및 인덱스 5 'hi' 6 >> len(str1) #Length 7 16 8 >> str1.find('is') ;> str1.find('is',3, 9)11 512 >>> str1.find('iss') # 찾을 수 없으면 -1을 반환하고, 인덱스이면 오류 13이 보고됩니다. -114 >> 'is',3)15 516 >>> str1.index('iss')17 역추적(최근 호출 마지막):18 파일 "", 1행, 19 ValueError: 하위 문자열을 찾을 수 없음20 > aaa'25 >>> str1.rstrip()26 ' aaa'27 >>> str1 = 'duiqi' #정렬 작업 28 >>> str1.ljust(20)29 'duiqi ' 30 > >>str1.ljust(20,'*')31 'duiqi******************'32 >>>str1.rjust(20,' *')33 '********************duiqi'34 >>> str1.center(20,'*')35 '****** ******duiqi* *******'36 >>> str1 = '이것은 문자열입니다'37 >>> str1.split() ##분할 연산 38 [' this', 'is', ' a', 'string']39 >>> str1.splitlines()40 ['이것은 문자열입니다']41 >>> 3]42 >>> '->'.join([str(i) for i in list1]) #연결 작업 43 '1->2->3'44 >>> str145 '이것은 문자열입니다'46 >>> str1.count('is') #Count 47 248 >>> str1.replace('is','os') #Replace 49 'thos os a string'50 >> > str1.replace('is','os',1) #바꾸기, 1 51 'thos는 문자열입니다'52 53 str1.startswith('sub') #시작하는 내용 with 54 str1.endswith(' sub') #55 str1.lower()로 끝나는 것 #소문자로 변환 56 str1.upper() #대문자로 변환
코드 보기
목록 및 튜플(그룹은 수정할 수 없음)
1 >>> lst1 = ['a'] 2 >>> Append('b') #New 추가 3 >>> lst1 4 ['a', 'b'] 5 >>> lst2 = ['c','d'] 6 >> > lst1.extend(lst2) # 확장된 신규 7 >>> lst1 8 ['a', 'b', 'c', 'd'] 9 >>lst1.insert(0, 'z') #10개 삽입 >>> lst111 ['z', 'a', 'b', 'c', 'd']12 >>>lst1.pop() #제거 end 13 'd'14 >> lst115 ['z', 'a', 'b', 'c']16 >>> lst1.remove('z') #지정된 요소를 삭제합니다. 17 >>> lst118 [ 'a', 'b', 'c']19 >> lst1 = ['a', 'b', 'c', 'd']20 > >> lst2 = lst1.copy () # python3의 얕은 복사본에는 21개가 있습니다. >>> lst2 = lst1.copy()22 >>> lst223 ['a', 'b', 'c ', 'd']24 >> lst2.clear() #목록 25 지우기 >>> lst129 ['d', 'c' , 'b', 'a']30 >>> lst1.sort() #Sort31 >>> lst132 ['a', 'b', 'c ', 'd']33 >>> lst1.append('a')34 >>> lst1.count('a') #Count 35 236 >>> ', 'b', 'c', 'd', 'a']38 >>> len(lst1) #길이 39 540 >>> lst1.index('a') #Index 41 042 >>> lst1 .index('a',1) #Index 43 4
코드 보기
사전
1 >>> dic1 = {'key1' : 'a','key2' : 'b'} 2 >>> dic1.get('key1') #사전 값을 가져옵니다. no 기본 반환은 None입니다. 3 'a' 4 >>> dic1.get('key3') 5 >>> dic1.items() 6 dict_items([('key2' , ' b'), ('key1', 'a')]) #Return 튜플 목록 7 >>> list(dic1.items()) 8 [('key2', 'b'), (' key1 ', 'a')] 9 >>> dic1.keys() #반환 키 목록 10 dict_keys(['key2', 'key1'])11 >>dic1.values() # 반환 값 목록 12 dict_values(['b', 'a'])13 >>> dic2 = dic1.copy() #Shallow copy 14 >>> dic215 {'key2': 'b', ' key1': 'a'}16 >>> dic1['key3'] = 'c' #할당(수정)17 >>> dic118 {'key2': 'b', 'key1' : 'a', 'key3': 'c'}19 >>> dic1.pop('key1') #지정된 키20 삭제 'a'21 >>> dic122 {'key2': ' b ', 'key3': 'c'}23 >>> dic1.get('key1','a') #값, no 'a'24 'a'25 >>> 'key2': 'b', 'key3': 'c'}27 >>> dic1.setdefault('key1','a') # 기본값 설정(쓸데없어 보임) 28 'a'29 > >> dic130 {'key2': 'b', 'key1': 'a', 'key3': 'c'}31 >>> dic3 = {'name':'update'}32 > ;>> dic1.update(dic3) #Update 33 >>> dic1 34 {'key2': 'b', 'name': 'update', 'key1': 'a', 'key3' : 'c'}35 >>> del dic3 #삭제 36 >>> dic137 {'key2': 'b', 'name': 'update', 'key1': 'a', ' key3': 'c'}38 >>> len(dic1) #Length 39 4
코드 보기
위 내용은 Python 기본 내용입니다. 관련 기사는 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!