Python基礎之變數型別
阿新 • • 發佈:2019-02-07
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型別 |
---|---|
直接訪問 | 數字 |
順序訪問 | 字串、元組、列表 |
對映訪問 | 字典 |