4.數值類型,集合-python3基礎知識
數值類型
1. 整型:
十進制:a=4
或者類型轉換int()
返回int類型,int(str,base)
將字符串轉爲指定進制的數
二進制:a=0b1011
類型轉換bin()
返回str類型
八進制:a=0o17
類型轉換oct()
返回str類型
十六進制:a=0x12a
類型轉換hex()
返回str類型
2. 浮點型:float
3. 複數:complex
1+4j
或者 1+4J
也可以使用cmoplex(real,imag)
來創建
通過c.real
c.imag
來獲取複數的實部跟虛部
數值複雜度整型<浮點型<複數,在不同類型的運算時,Python會默認轉爲最高複雜度的類型。
4.分數Fraction
通過 from fractions import Fraction
導入模塊,
創建:x=Fraction(1,3)
>>>1/3
可以直接跟其他類型參與計算。
運算
除了基礎的數學運算,還包括位運算,取整截斷等
運算符 | 描述 |
---|---|
x and y | 邏輯與 |
x or y | 邏輯或 |
not x | 邏輯非 |
x if y else z | 三元表達式 |
x != y | 不等於 |
x | y | 按位或 |
x ^ y | 按位異或/不進位加法 |
x & y | 按位與 |
~x | 按位非 |
math.floor() | 向下取整 |
math.trunc() | 截斷 ,只保留整數位 |
集合(set)
集合是無序的可變,但元素是唯一的不可變對象;支持集合論相關操作。
集合創建
直接創建:
x = {'a', 'b', 'c', 'd', 'e'}
>>>{'d', 'c', 'e', 'a', 'b'}
集合是無序的,所以輸出結果並不會有序
通過set(Iterator):
字符串:
x=set('abcde')
>>>{'d', 'c', 'e', 'a', 'b'}
列表:
y=set([1,2,3,4,5])
>>>{1, 2, 3, 4, 5}
元組:
y=set((1,2,3,4,5))
>>>{1, 2, 3, 4, 5}
字典:只有key值
z=set(dict(a=1,b=2,c=3))
>>>{'a', 'c', 'b'}
同樣的,集合可以像列表,字典一樣,通過推導方法創建:
x={x**2 for x in [1,2,3,4,5]}
print(x)
>>>{1, 4, 9, 16, 25}
方法
集合論中的差並交補都可以實現
假設 x=set('abcde') y=set(('bcfgh'))
差X-Y:
x-y
>>>{'d', 'e', 'a'}
並X∪Y:
x|y
>>>{'g', 'f', 'd', 'e', 'a', 'c', 'b', 'h'}
交X∩Y:
x&y
>>>{'b', 'c'}
補∁Ux,設U=X∪Y:
u=x|y
u^x
>>> {'h', 'f', 'g'}
添加元素:
需要注意的是,集合只能包含不可變對象(可哈希的),所以,列表,字典,集合不能嵌套在集合中,否則會報錯TypeError: unhashable type:'xxx'
,如果要添加複合對象,可以添加元組:
x.add(element)
或者x.add(tuple)
如果非要嵌套集合,可以通過frozenset(set)
創建一個不可變集合:
x=set('abcde')
print(id(x))
y=set(('bcfgh'))
x=frozenset(x)
print(id(x))
y.add(x)
print(y)
>>>1720969268808
1720969341640
{'h', frozenset({'a', 'b', 'e', 'c', 'd'}), 'g', 'b', 'f', 'c'}