Python資料類型、字串、運算子入門教程

來源:互聯網
上載者:User

在這裡把python中特有的,以及和C不同的地方記下來。

資料類型
強制類型轉換
字串
逸出字元
自然字串
Unicode字串
字串是不可變的
標識符變數的命名
縮排
運算子
運算優先順序
1.資料類型

在python中,有4種資料類型——整數(int)、長整數(long)、浮點數(float)和複數(complex)。

2是一個整數的例子。
長整數不過是大一些的整數。長整型通常在數字後面加L表示,如1000000L。
3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裡,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是複數的例子。

這裡居然有複數,果然比C要方便計算,在C中通常需要自己定義複數類型。

強制類型轉換

上面的4中資料類型可以互相轉換,還可以轉換為字串類型(str)如:

>>> a=12343434
>>> long(a)
12343434L
>>> str(a)
'12343434'
>>> float(a)
12343434.0
complex(a)
(12343434+0j)
2.字串

可以用單引號和雙引號來表示中間為字串,兩者並沒有什麼差別。當字串裡有引號或者多行時,可以用三引號括起來(”’或者”“”)表示。

在C++中,使用單引號表示char,用雙引號表示String。
逸出字元

在字元中,若要表示斜杠\,需要使用\,其他特殊符號也是,例如用\’ 表示引號(若沒有使用三引號)。程式中可以使用 \ 表示兩行是連在一起的,例如

s = 'This is a string. \
This continues the string.'
print s
輸出:

This is a string. This continues the string.
自然字串

如果你想要指示某些不需要如轉義符那樣的特別處理的字串,那麼你需要指定一個自然字串。自然字串通過給字串加上首碼r或R來指定。例如r”Newlines are indicated by \n”。

Unicode字串

Unicode是書寫國際文本的標準方法。如果你想要用中文或者其他非英文文本,那麼你需要有一個支援Unicode的編輯器。類似地,Python允許你處理Unicode文本——你只需要在字串前加上首碼u或U。例如,u”This is a Unicode string.”。

記住,在你處理文字檔的時候使用Unicode字串,特別是當你知道這個檔案含有用非英語的語言寫的文本。

字串是不可變的

這意味著一旦你創造了一個字串,你就不能再改變它了。雖然這看起來像是一件壞事,但實際上它不是。若要對一個字元進行修改,其實也可以用原來的名字進行賦值,例如:

>>> s='abc'
>>> s=s[:2]
>>> print s
ab
3.標識符(變數的命名)

標識符的第一個字元必須是字母表中的字母(大寫或小寫)或者一個底線(‘ _ ’)。

標識符名稱的其他部分可以由字母(大寫或小寫)、底線(‘ _ ’)或數字(0-9)組成。

無效 標識符名稱的例子有2things、this is spaced out和my-name。

使用變數時只需要給它們賦一個值。不需要聲明或定義資料類型。

4.縮排

空白在Python中是重要的。事實上行首的空白是重要的。它稱為縮排。在邏輯行首的空白(空格和定位字元)用來決定邏輯行的縮排層次,從而用來決定語句的分組。

這意味著同一層次的語句必須有相同的縮排。每一組這樣的語句稱為一個塊。

不要混用空格和tab,要是用tab就全部用tab,若用4個空格或2個空格則一直用空格。一個tab和4個空格是不一樣的,即使看起來位置一樣!

5.運算子

 

6.運算優先順序

下面這個表給出Python的運算子優先順序,從最低的優先順序(最鬆散地結合)到最高的優先順序(最緊密地結合)。這意味著在一個運算式中,Python會首先計算表中較下面的運算子,然後在計算資料行在表上部的運算子

 

運算子通常由左向右結合,即具有相同優先順序的運算子按照從左向右的順序計算。如果我們想要改變它們的計算順序,得使用圓括弧。

補充例子

1、字串
1.1、如何在Python中使用字串
a、使用單引號(')
用單引號括起來表示字串,例如:
str='this is string';
print str;

b、使用雙引號(")
雙引號中的字串與單引號中的字串用法完全相同,例如:
str="this is string";
print str;

c、使用三引號(''')
利用三引號,表示多行的字串,可以在三引號中自由的使用單引號和雙引號,例如:
str='''this is string
this is pythod string
this is string'''
print str;

2、布爾類型
bool=False;
print bool;
bool=True;
print bool;

3、整數
int=20;
print int;

4、浮點數
float=2.3;
print float;

5、數字
包括整數、浮點數。
5.1、刪除數字對象引用,例如:
a=1;
b=2;
c=3;
del a;
del b, c;
#print a; #刪除a變數後,再調用a變數會報錯

5.2、數字類型轉換


int(x [,base]) 將x轉換為一個整數
float(x ) 將x轉換到一個浮點數
complex(real [,imag]) 建立一個複數
str(x) 將對象x轉換為字串
repr(x) 將對象x轉換為運算式字串
eval(str) 用來計算在字串中的有效Python運算式,並返回一個對象
tuple(s) 將序列s轉換為一個元組
list(s) 將序列s轉換為一個列表
chr(x) 將一個整數轉換為一個字元
unichr(x) 將一個整數轉換為Unicode字元
ord(x) 將一個字元轉換為它的整數值
hex(x) 將一個整數轉換為一個十六進位字串
oct(x) 將一個整數轉換為一個八進位字串

 

5.3、數學函數


abs(x)    返回數位絕對值,如abs(-10) 返回 10
ceil(x)    返回數位上入整數,如math.ceil(4.1) 返回 5
cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
exp(x)    返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045
fabs(x)    返回數位絕對值,如math.fabs(-10) 返回10.0
floor(x) 返回數位下舍整數,如math.floor(4.9)返回 4
log(x)    如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x) 返回以10為基數的x的對數,如math.log10(100)返回 2.0
max(x1, x2,...)    返回給定參數的最大值,參數可以為序列。
min(x1, x2,...)    返回給定參數的最小值,參數可以為序列。
modf(x)    返回x的整數部分與小數部分,兩部分的數值符號與x相同,整數部分以浮點型表示。
pow(x, y) x**y 運算後的值。
round(x [,n]) 返回浮點數x的四捨五入值,如給出n值,則代表舍入到小數點後的位元。
sqrt(x)    返回數字x的平方根,數字可以為負數,傳回型別為實數,如math.sqrt(4)返回 2+0j

 

6、列表
6.1、初始化列表,例如:
list=['physics', 'chemistry', 1997, 2000];
nums=[1, 3, 5, 7, 8, 13, 20];

6.2、訪問列表中的值,例如:


'''nums[0]: 1'''
print "nums[0]:", nums[0]
'''nums[2:5]: [5, 7, 8] 從下標為2的元素切割到下標為5的元素,但不包含下標為5的元素'''
print "nums[2:5]:", nums[2:5]
'''nums[1:]: [3, 5, 7, 8, 13, 20] 從下標為1切割到最後一個元素'''
print "nums[1:]:", nums[1:]
'''nums[:-3]: [1, 3, 5, 7] 從最開始的元素一直切割到倒數第3個元素,但不包含倒數第三個元素'''
print "nums[:-3]:", nums[:-3]
'''nums[:]: [1, 3, 5, 7, 8, 13, 20] 返回所有元素'''
print "nums[:]:", nums[:]

6.3、更新列表,例如:

nums[0]="ljq";
print nums[0];
6.4、刪除列表元素

del nums[0];
'''nums[:]: [3, 5, 7, 8, 13, 20]'''
print "nums[:]:", nums[:];
6.5、列表指令碼操作符
列表對+和*的操作符與字串相似。+號用於組合列表,*號用於重複列表,例如:

print len([1, 2, 3]); #3
print [1, 2, 3] + [4, 5, 6]; #[1, 2, 3, 4, 5, 6]
print ['Hi!'] * 4; #['Hi!', 'Hi!', 'Hi!', 'Hi!']
print 3 in [1, 2, 3] #True
for x in [1, 2, 3]: print x, #1 2 3
6.6、列表截取

L=['spam', 'Spam', 'SPAM!'];
print L[2]; #'SPAM!'
print L[-2]; #'Spam'
print L[1:]; #['Spam', 'SPAM!']
6.7、列表函數&方法


list.append(obj) 在列表末尾添加新的對象
list.count(obj) 統計某個元素在列表中出現的次數
list.extend(seq) 在列表末尾一次性追加另一個序列中的多個值(用新列表擴充原來的列表)
list.index(obj) 從列表中找出某個值第一個匹配項的索引位置,索引從0開始
list.insert(index, obj) 將對象插入列表
list.pop(obj=list[-1]) 移除列表中的一個元素(預設最後一個元素),並且返回該元素的值
list.remove(obj) 移除列表中某個值的第一個匹配項
list.reverse() 反向列表中元素,倒轉
list.sort([func]) 對原列表進行排序

7、元組(tuple)

Python的元組與列表類似,不同之處在於元組的元素不能修改;元組使用小括弧(),列表使用方括弧[];元組建立很簡單,只需要在括弧中添加元素,並使用逗號(,)隔開即可,例如:

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";
 

建立空元組,例如:tup = ();

元組中只有一個元素時,需要在元素後面添加逗號,例如:tup1 = (50,);

元組與字串類似,下標索引從0開始,可以進行截取,組合等。

7.1、訪問元組

tup1 = ('physics', 'chemistry', 1997, 2000);
#tup1[0]: physics
print "tup1[0]: ", tup1[0]
#tup1[1:5]: ('chemistry', 1997)
print "tup1[1:5]: ", tup1[1:3]
7.2、修改元組
元組中的元素值是不允許修改的,但我們可以對元組進行串連組合,例如:
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');

# 以下修改元組元素操作是非法的。
# tup1[0] = 100;

# 建立一個新的元組

tup3 = tup1 + tup2;
print tup3; #(12, 34.56, 'abc', 'xyz')
7.3、刪除元組
元組中的元素值是不允許刪除的,可以使用del語句來刪除整個元組,例如:

tup = ('physics', 'chemistry', 1997, 2000);
print tup;
del tup;
7.4、元組運算子
與字串一樣,元組之間可以使用+號和*號進行運算。這就意味著他們可以組合和複製,運算後會產生一個新的元組。


7.5、元組索引&截取

L = ('spam', 'Spam', 'SPAM!');
print L[2]; #'SPAM!'
print L[-2]; #'Spam'
print L[1:]; #['Spam', 'SPAM!']
7.6、元組內建函數

cmp(tuple1, tuple2) 比較兩個元組元素。
len(tuple) 計算元組元素個數。
max(tuple) 返回元組中元素最大值。
min(tuple) 返回元組中元素最小值。
tuple(seq) 將列錶轉換為元組。
8、字典

8.1、字典簡介
字典(dictionary)是除列表之外python中最靈活的內建資料結構類型。列表是有序的對象結合,字典是無序的對象集合。兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過位移存取。

字典由鍵和對應的值組成。字典也被稱作關聯陣列或雜湊表。基本文法如下:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'};
也可如此建立字典:

dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };
每個鍵與值必須用冒號隔開(:),每對用逗號分割,整體放在花括弧中({})。鍵必須獨一無二,但值則不必;值可以取任何資料類型,但必須是不可變的,如字串,數或元組。

8.2、訪問字典裡的值

#!/usr/bin/python
dict = {'name': 'Zara', 'age': 7, 'class': 'First'};
print "dict['name']: ", dict['name'];
print "dict['age']: ", dict['age'];
8.3、修改字典
向字典添加新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下執行個體:

#!/usr/bin/python
dict = {'name': 'Zara', 'age': 7, 'class': 'First'};
dict["age"]=27; #修改已有鍵的值
dict["school"]="wutong"; #增加新的鍵/值對
print "dict['age']: ", dict['age'];
print "dict['school']: ", dict['school'];
8.4、刪除字典
del dict['name']; # 刪除鍵是'name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典
例如:

#!/usr/bin/python
dict = {'name': 'Zara', 'age': 7, 'class': 'First'};
del dict['name'];
#dict {'age': 7, 'class': 'First'}
print "dict", dict;
注意:字典不存在,del會引發一個異常

8.5、字典內建函數&方法


cmp(dict1, dict2) 比較兩個字典元素。
len(dict) 計算字典元素個數,即鍵的總數。
str(dict) 輸出字典可列印的字串表示。
type(variable) 返回輸入的變數類型,如果變數是字典就返回字典類型。
radiansdict.clear() 刪除字典內所有元素
radiansdict.copy() 返回一個字典的淺複製
radiansdict.fromkeys() 建立一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
radiansdict.get(key, default=None) 返回指定鍵的值,如果值不在字典中返回default值
radiansdict.has_key(key) 如果鍵在字典dict裡返回true,否則返回false
radiansdict.items() 以列表返回可遍曆的(鍵, 值) 元組數組
radiansdict.keys() 以列表返回一個字典所有的鍵
radiansdict.setdefault(key, default=None) 和get()類似, 但如果鍵不已經存在於字典中,將會添加鍵並將值設為default
radiansdict.update(dict2) 把字典dict2的鍵/值對更新到dict裡
radiansdict.values() 以列表返回字典中的所有值

9、日期和時間

9.1、擷取目前時間,例如:
import time, datetime;

localtime = time.localtime(time.time())
#Local current time : time.struct_time(tm_year=2014, tm_mon=3, tm_mday=21, tm_hour=15, tm_min=13, tm_sec=56, tm_wday=4, tm_yday=80, tm_isdst=0)
print "Local current time :", localtime
說明:time.struct_time(tm_year=2014, tm_mon=3, tm_mday=21, tm_hour=15, tm_min=13, tm_sec=56, tm_wday=4, tm_yday=80, tm_isdst=0)屬於struct_time元組,struct_time元組具有如下屬性:


9.2、擷取格式化的時間
可以根據需求選取各種格式,但是最簡單的擷取可讀的時間模式的函數是asctime():
2.1、日期轉換為字串

首選:print time.strftime('%Y-%m-%d %H:%M:%S');
其次:print datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S')
最後:print str(datetime.datetime.now())[:19]
2.2、字串轉換為日期

expire_time = "2013-05-21 09:50:35"
d = datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S")
print d;
9.3、擷取日期差


oneday = datetime.timedelta(days=1)
#今天,2014-03-21
today = datetime.date.today()
#昨天,2014-03-20
yesterday = datetime.date.today() - oneday
#明天,2014-03-22
tomorrow = datetime.date.today() + oneday
#擷取今天零點的時間,2014-03-21 00:00:00
today_zero_time = datetime.datetime.strftime(today, '%Y-%m-%d %H:%M:%S')

#0:00:00.001000
print datetime.timedelta(milliseconds=1), #1毫秒
#0:00:01
print datetime.timedelta(seconds=1), #1秒
#0:01:00
print datetime.timedelta(minutes=1), #1分鐘
#1:00:00
print datetime.timedelta(hours=1), #1小時
#1 day, 0:00:00
print datetime.timedelta(days=1), #1天
#7 days, 0:00:00
print datetime.timedelta(weeks=1)

9.4、擷取時間差


#1 day, 0:00:00
oneday = datetime.timedelta(days=1)
#今天,2014-03-21 16:07:23.943000
today_time = datetime.datetime.now()
#昨天,2014-03-20 16:07:23.943000
yesterday_time = datetime.datetime.now() - oneday
#明天,2014-03-22 16:07:23.943000
tomorrow_time = datetime.datetime.now() + oneday
注意時間是浮點數,帶毫秒。

那麼要擷取目前時間,需要格式化一下:
print datetime.datetime.strftime(today_time, '%Y-%m-%d %H:%M:%S')
print datetime.datetime.strftime(yesterday_time, '%Y-%m-%d %H:%M:%S')
print datetime.datetime.strftime(tomorrow_time, '%Y-%m-%d %H:%M:%S')

9.5、擷取上個月最後一天

last_month_last_day = datetime.date(datetime.date.today().year,datetime.date.today().month,1)-datetime.timedelta(1)
9.6、字串日期格式化為秒數,返回浮點類型:

expire_time = "2013-05-21 09:50:35"
d = datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S")
time_sec_float = time.mktime(d.timetuple())
print time_sec_float
9.7、日期格式化為秒數,返回浮點類型:

d = datetime.date.today()
time_sec_float = time.mktime(d.timetuple())
print time_sec_float
9.8、秒數轉字串

time_sec = time.time()
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time_sec))

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.