標籤:
字串和編碼
字元 |
ASCII |
Unicode |
UTF-8 |
A |
1000001 |
00000000 01000001 |
1000001 |
中 |
x |
01001110 00101101 |
11100100 10111000 10101101 |
格式化
在Python中,採用的格式化方式和C語言是一致的,用%實現,舉例如下:
>>> ‘Hello, %s‘ % ‘world‘
‘Hello, world‘
>>> ‘Hi, %s, you have $%d.‘ % (‘Michael‘, 1000000)
‘Hi, Michael, you have $1000000.‘
%
運算子就是用來格式化字串的。在字串內部,%s
表示用字串替換,%d
表示用整數替換,有幾個%?
預留位置,後面就跟幾個變數或者值,順序要對應好。如果只有一個%?
,括弧可以省略。常見的預留位置有:
%d |
整數 |
%f |
浮點數 |
%s |
字串 |
%x |
十六進位整數 |
其中,格式化整數和浮點數還可以指定是否補0和整數與小數的位元:
>>> ‘%2d-%02d‘ % (3, 1)
‘ 3-01‘
>>> ‘%.2f‘ % 3.1415926
‘3.14‘
%s永遠起作用,它會把任何資料類型轉換為字串:
>>> ‘Age: %s. Gender: %s‘ % (25, True)
‘Age: 25. Gender: True‘
對於Unicode字串,用法完全一樣,但最好確保替換的字串也是Unicode字串:
>>> u‘Hi, %s‘ % u‘Michael‘
u‘Hi, Michael‘
字串裡面的%是一個一般字元時,需要轉義,用%%來表示一個%
Python內建的一種資料類型是列表:
List
list是一種有序的集合,可以隨時添加和刪除其中的元素。
>>>classmates=[‘michael‘,‘bob‘,‘tracy‘]
>>> classmates
[‘michael‘, ‘bob‘, ‘tracy‘]
>>>len(classmates)#獲得list元素的個數
3
>>> classmates[0]#用索引來訪問list中每一個位置的元素,從0開始
‘michael‘
>>> classmates[-1]
‘tracy‘
>>> classmates[3]#索引超出了範圍報錯
Traceback (most recent calllast):
File "<pyshell#11>", line 1,in <module>
classmates[3]
IndexError: list index outof range
>>> classmates[-2]
‘bob‘
>>>classmates.append(‘adam‘)#往list中追加元素到末尾
>>> classmates
[‘michael‘, ‘bob‘, ‘tracy‘,‘adam‘]
>>>classmates.insert(1,‘jack‘)#把元素插入到指定的位置
>>> classmates
[‘michael‘, ‘jack‘, ‘bob‘,‘tracy‘, ‘adam‘]
>>>classmates.pop()#刪除list末尾的元素
‘adam‘
>>>classmates.pop(1)#賦值給對應的索引位置
‘jack‘
>>> classmates
[‘michael‘, ‘bob‘, ‘tracy‘]
>>>classmates[1]=‘sarah‘#把某個元素替換成別的元素
>>> classmates
[‘michael‘, ‘sarah‘,‘tracy‘]
>>> L = [‘Apple‘,123, True]#元素的資料類型也可以不同
>>> s = [‘python‘,‘java‘, [‘asp‘, ‘php‘], ‘scheme‘]#元素也可以是另一個list
tuple
元組和list類似,但是元組一旦初始化就不能修改
>>> classmates =(‘Michael‘, ‘Bob‘, ‘Tracy‘)
>>> t = (1,)#只有1個元素時必須加一個逗號
特例,“可變的”tuple
>>> t = (‘a‘, ‘b‘,[‘A‘, ‘B‘])
>>> t[2][0] = ‘X‘
>>> t[2][1] = ‘Y‘
>>> t
(‘a‘, ‘b‘, [‘X‘, ‘Y‘])
條件判斷
age =3
ifage >= 18:# 如果if判斷是False,不執行if的內容,執行else
print ‘your age is‘, age
print ‘adult‘
else:
print ‘your age is‘, age
print ‘teenager‘
if語句執行是從上往下判斷,如果在某個判斷上是True,把該判斷對應的語句執行後,就忽略掉剩下的elif和else
if <條件判斷1>:
<執行1>
elif <條件判斷2>:
<執行2>
elif <條件判斷3>:
<執行3>
else:
<執行4>
迴圈
for...in迴圈
names= [‘Michael‘, ‘Bob‘, ‘Tracy‘]
forname in names:
print name
sum =0
for xin range(101):
sum = sum + x
printsum
while迴圈
sum =0
n =99
whilen > 0:
sum = sum + n
n = n - 2
printsum
dict
dict的key必須是不可變對象。list是可變的,就不能作為key。
>>> d = {‘Michael‘: 95, ‘Bob‘: 75,‘Tracy‘: 85}
>>> d[‘Michael‘]
95
和list比較,dict有以下幾個特點:
尋找和插入的速度極快,不會隨著key的增加而增加;
需要佔用大量的記憶體,記憶體浪費多。
而list相反:
尋找和插入的時間隨著元素的增加而增加;
佔用空間小,浪費記憶體很少。
set
set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。
要建立一個set,需要提供一個list作為輸入集合:
>>> s = set([1, 2, 3])
>>> s
set([1, 2, 3])
>>> s = set([1, 1, 2, 2, 3, 3])#需要list作為輸入集合
>>> s
set([1, 2, 3])#重複元素在set中自動被過濾
>>> s.add(4)#添加元素到set中
>>> s
set([1, 2, 3, 4])
>>> s.add(4)
>>> s
set([1, 2, 3, 4])
>>> s.remove(4)#刪除元素
>>> s
set([1, 2, 3])
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2#交集
set([2, 3])
>>> s1 | s2#並集
set([1, 2, 3, 4])
set和dict的唯一區別僅在於沒有儲存對應的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變對象,因為無法判斷兩個可變對象是否相等,也就無法保證set內部“不會有重複元素”。
歡迎關注
Python學習 Day 3 字串 編碼 list tuple 迴圈 dict set