python基礎2

來源:互聯網
上載者:User

標籤:ems   之間   class   字母   post   數位   tuple   pre   []   

編碼:

1,is ==
== 比較的是值.
is 記憶體位址.
對於int str 來說:存在小資料池的概念.
為什麼存在小資料池? 節省記憶體.
int -5 ~ 256
str 全部字母,數字與單個字母想乘 數字不超過20.
其他資料類型:沒有小資料池的概念,
l1 = [1] l2 = [1]
大環境:python3 :
python3 中:str 記憶體中的編碼 unicode
如果我想儲存,或者傳輸字串(檔案)能直接用str? 不能
解決: 出現了bytes類型.
對於英文:
str: 表現形式: s = ‘alex‘
記憶體編碼:unicode

bytes: 表現形式: s = b‘alex‘
記憶體編碼:非unicode(可以是utf-8,gbk,gb2312...)


對於中文:
str: 表現形式: s = ‘中國‘
記憶體編碼:unicode
bytes: 表現形式: s = b‘xe3\xf2\......‘
記憶體編碼:非unicode(可以是utf-8,gbk,gb2312...)
你想儲存,傳輸一個檔案,或者字串:str ---> bytes
str.encode(‘utf-8‘) ----bytes

內容補充:int、str、tuple:
#int

# str

s = ‘ ‘ #只能是以至少一個空格組成的字串(全空格)
# print(s.isspace())

#tuple
# tu = (1)
# tu1 = (1,)
# print(tu,type(tu))
# print(tu1,type(tu1))
# tu = (‘alex‘)
# tu1 = (‘alex‘,)
# print(tu,type(tu))
# print(tu1,type(tu1))
tu = ([1,2,3])
tu1 = ([1,2,3],)
print(tu,type(tu))
print(tu1,type(tu1))
#當元組只有一個元素組成並且沒有‘,‘
# 則該元素是什麼資料類型,整體就是什麼資料類型.
tu.append(‘333‘)
print(tu)


list、dict:
#list
l1 = [111,222,333,444,555]
# for i in range(len(l1)):
# # i = 0 i = 1 i = 2 i = 3
# print(l1)
# del l1[i]
# print(l1) # [222,333,444,555] [222,444,555] [222,444]
# print(l1)

# l1 = [111,222,333,444,555] 將索引為奇數位的元素刪除.
# l1.pop(222)
# l1.remove(1)

# 方法一:
# l1 = [111,222,333,444,555]
# l2 = []
# for i in range(len(l1)):
# if i % 2 == 0:
# l2.append(l1[i])
# l1 = l2
# print(l1)

#方法二:
# l1 = [111,222,333,444,555]
# for i in range(1,len(l1)):
# if i <= 2 :
# l1.pop(i)
# print(l1)

#方法二:
# l1 = [111,222,333,444,555,666,777]
# #
# del l1[1::2]
# print(l1)
# l1 = [111,222,333,444,555]
# for i in range(len(l1)-1,0,-1):
# if i % 2 == 1:
# del l1[i]
# print(l1)

#在迴圈一個列表時,如果要是刪除某些或者某類元素,容易出錯.

#fromkeys()

# dic = dict.fromkeys(‘abc‘,‘alex‘)
# print(dic)
# dic1 = dict.fromkeys([1,2,3],[])
# print(dic1)
# dic1[1].append(‘alex‘)
# print(dic1)

dic = {‘k1‘:‘alex‘,‘k2‘:‘太白‘,‘k3‘:‘日天‘,‘name‘:‘wusir‘}
#不可變的資料類型:可雜湊
# for i in dic:
# if ‘k‘ in i:
# del dic[i]

# l1 = []
# for i in dic:
# if ‘k‘ in i:
# l1.append(i)
# print(l1)
#
# for k in l1:
# del dic[k]
# print(dic)

#在迴圈一個字典時,如果刪除某些索引值對,可能會報錯.

#資料類型之間的轉化:
#int <---> str
#int <---> bool
#str <--->.bool
# split
#str <------> list
# join
# tuple <---> list
# l1 = [1,2,3]
# tu = tuple(l1)
# l2 = list(tu)
# print(tu,l2)

#dict專屬類型:與list轉換
# dic = {‘k1‘:‘alex‘,‘k2‘:‘太白‘,‘k3‘:‘日天‘,‘name‘:‘wusir‘}
# print(list(dic.keys()))
# print(list(dic.values()))
# print(list(dic.items()))


深淺COPY:
# l1 = [1,2,3,4]
# l2 = l1
# l1.append(5)
# print(l1,l2)
#對於賦值運算,就是共同指向一個記憶體位址.

# s1 = ‘alex‘
# s2 = s1
# s1 = ‘alex2‘
# print(s1,id(s1))
# print(s2,id(s2))

#copy
# l1 = [1,2,3]
# l2 = l1.copy()
# l1.append(666)
# print(l1,id(l1))
# print(l2,id(l2))
# l1 = [1,[22,33],2,3]
# l2 = l1.copy()
# l1.append(666)
# print(l1,id(l1))
# print(l2,id(l2))

# l1 = [1,[22,33,],2,3]
# l2 = l1.copy()
# l1[1].append(666)
# print(l1,id(l1),id(l1[1]))
# print(l2,id(l2),id(l2[1]))

#對於淺copy來說,第一層都是獨立的記憶體位址,從第二層開始,都是指向同一個記憶體位址,一變都變.
# import copy
#
# l1 = [1,[22,33,],2,3]
# l2 = copy.deepcopy(l1)
# l1.append(777)
# l1[1].append(666)
# print(l1,id(l1),id(l1[1]))
# print(l2,id(l2),id(l2[1]))
#對於深copy,無論多少層,在記憶體中都是兩個獨立的記憶體位址.
l1 = [1,[1,2],2,3]
l2 = l1[:] # 是淺copy
l1[1].append(111)
print(l1,l2)

python基礎2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.