1. 程式人生 > >Python基礎之變數型別

Python基礎之變數型別

Python 基礎之變數型別

基本資料型別

Python有五個標準的資料型別:

  • Number(數字)
  • String(字串)
  • List(列表)
  • Tuple(元組)
  • Dictionary(字典)/Set(集合)

數字

Python支援四種不同的數值型別:

int(有符號整型)
long(長整型[也可以代表八進位制和十六進位制])
float(浮點型)
complex(複數)

數字是不可改變的資料型別,這意味著改變數字資料型別會分配一個新的物件。

例子1:

# coding=utf-8
__author__ = 'Z'
a = 1 b = 1.5 c = 123456789123 d = 123L e = 2 + 3j print 'a:', a, type(a) print 'b:', b, type(b) print 'c:', c, type(c) print 'd:', d, type(d) print 'e:', e, type(e) print '2**32=', 2 ** 32 執行結果: a: 1 <type 'int'> b: 1.5 <type 'float'> c: 123456789123 <type 'long'> d: 123 <type 'long'
> e: (2+3j) <type 'complex'> 2**32= 4294967296

例子2:

# coding=utf-8
__author__ = 'Z'

a = 1
b = 2
print 'a:', a, id(a)
print 'b:', b, id(b)

del a
print a


執行結果:
a: 1 7011808
b: 2 7011796
Traceback (most recent call last):
  File "test.py", line 10, in <module>
    print a
NameError: name 'a'
is not defined

布林bool

布林“數”,本質上是整型的子類,對應於整型的1和0。

# coding=utf-8
__author__ = 'zyt'

print int(True)
print int(False)


執行結果:
1
0

字串str

raw strings例子,當不想讓\轉義字元時,可在引號前放一個r

# coding=utf-8
__author__ = 'zyt'

print 'C:\some\name'  # here \n means newline!
print r'C:\some\name'  # raw strings:note the r before the quote


執行結果:
C:\some
ame
C:\some\name
  • 談談raw_input()

從標準輸入讀取字串,讀取值作為字串形式返回

raw_input(…)
raw_input([prompt]) -> string

raw_input例子:

# coding=utf-8
__author__ = 'zyt'

a = raw_input("input something:")
print a, type(a)


執行結果:
input something:123
123 <type 'str'>

元組tuple

元組可用( )建立。內部元素用逗號隔開。但是元素不能二次賦值,相當於只讀列表。

注意當定義的元組僅有1個元素時,也要加上逗號,否則就跟數學公式中的小括號發生歧義了:

# coding=utf-8
__author__ = 'zyt'

a = (1)  # 按數學公式小括號運算
b = (1,)

print a, type(a)
print b, type(b)


執行結果:
1 <type 'int'>
(1,) <type 'tuple'>

列表list

列表可用[ ]建立。

# coding=utf-8
__author__ = 'Z'

a = [1, 2, 3]
b = ['hello', 'world']
print type(a)
print a[0:2]
print a + b  # +號是連線運算子
print a * 3  # *號是重複操作次數


執行結果:
<type 'list'>
[1, 2]
[1, 2, 3, 'hello', 'world']
[1, 2, 3, 1, 2, 3, 1, 2, 3]

字典dict

字典可用{ }建立。字典由索引(key)和它對應的值value即key:value對組成。
幾乎所有型別的Python物件都可以用作鍵,不過一般還是以不能改變的數字或者字串最為常用。

# coding=utf-8
__author__ = 'zyt'

a = {'one': 1, 'two': 2, 'three': 3}
print a, type(a)
print a['two']
print a.keys()
print a.values()


執行結果:
{'three': 3, 'two': 2, 'one': 1} <type 'dict'>
2
['three', 'two', 'one']
[3, 2, 1]

集合set

集合也是可用{ }建立,內部元素間用逗號分割。set和dict類似。

# coding=utf-8
__author__ = 'zyt'

s = {4, 5, 6, 7, 8}
print s, type(s)

print 5 in s
print 6 not in s
print 10 in s

if 5 in s:
    print 'yes in it'
else:
    print 'not in it'


執行結果:
set([8, 4, 5, 6, 7]) <type 'set'>
True
False
False
yes in it

物件值的比較、物件身份的比較

參考《Python核心程式設計(第二版)WesleyJChun著-宋吉廣譯-4.5.2節》

# coding=utf-8
__author__ = 'zyt'

a = b = 8.5
c = 7.0 + 1.5
print 'id(a):', id(a)
print 'id(b):', id(b)
print 'id(c):', id(c)
print 'a==b:', a == b
print 'a==c:', a == c
print 'a is b:', a is b  # 等價於 id(a)==id(b)
print 'a is c:', a is c



執行結果:
id(a): 5393952
id(b): 5393952
id(c): 5393904
a==b: True
a==c: True
a is b: True
a is c: False

標準型別的分類

  • 按儲存模型分類
分類 Python型別
標量/原子型別 數值(所有的數值型別),字串(全部是文字)
容器型別 元組、列表、字典
  • 按更新模型分類
分類 Python型別
可變型別 列表、字典
不可變型別 數字、字串、元組
  • 按訪問模型分類
分類 Python型別
直接訪問 數字
順序訪問 字串、元組、列表
對映訪問 字典