Python入門01 阿里雲天池

2021-10-24 09:16:09 字數 4350 閱讀 9727

目錄

python入門01

身份運算子is,is not

python 裡面萬物皆物件(object),只要是物件,就有相應的屬性 (attributes) 和方法(methods)。

當把布林型變數用在數字運算中,用 1 和 0 代表 true 和 false。

print()函式

利用位運算實現快速計算

利用位運算實現整數集合

is, is not 對比的是兩個變數的記憶體位址

==, != 對比的是兩個變數的值

比較的兩個變數,指向的都是位址不可變的型別(str等),那麼is,is not 和 ==,!= 是完全等價的。

對比的兩個變數,指向的是位址可變的型別(list,dict,tuple等),則兩者是有區別的。

b = dir(int)

print(b)

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

對它們有個大概印象就可以了,具體怎麼用,需要哪些引數 (argument),還需要查文件。看個bit_length()的例子。

找到乙個整數的二進位制表示,再返回其長度。

a = 1031

print(bin(a)) # 0b10000000111

print(a.bit_length()) # 11

0b10000000111

11有時候我們想保留浮點型的小數點後 n 位。可以用 decimal 包裡的 decimal 物件和 getcontext()方法來實現。getcontext()顯示了 decimal 物件的預設精度值是 28 位 (prec=28)。

import decimal

from decimal import decimal

a = decimal.getcontext()

print(a)

b = decimal(1) / decimal(3)

print(b)

context(prec=28, rounding=round_half_even, emin=-999999, emax=999999, capitals=1, clamp=0, flags=, traps=[invalidoperation, divisionbyzero, overflow])

0.3333333333333333333333333333

使 1/3 保留 4 位,用getcontext().prec來調整精度。

import decimal

from decimal import decimal

a = decimal.getcontext()

print(a)

b = decimal(1) / decimal(3)

print(b)

decimal.getcontext().prec = 4

c = decimal(1) / decimal(3)

print(c)

context(prec=28, rounding=round_half_even, emin=-999999, emax=999999, capitals=1, clamp=0, flags=, traps=[invalidoperation, divisionbyzero, overflow])

0.3333333333333333333333333333

0.3333

print(true + true)  

print(true + false)

print(true * false)

210 

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=false)
通過<<>>快速計算2的倍數問題。

n << 1 #計算 n*2

n >> 1 #計算 n/2,負奇數的運算不可用

n << m #計算 n*(2^m),即乘以 2 的 m 次方

n >> m #計算 n/(2^m),即除以 2 的 m 次方

1 << n # 2^n

通過^快速交換兩個整數。 通過^快速交換兩個整數。

a,b=3,7

a^=b

b^=a

a^=b

print(a,b)

7 3 

通過a & (-a)快速獲取a的最後為 1 位置的整數。

【例】00 00 01 01 # 5

&11 11 10 11 # -5

-----

00 00 00 01 # 1

00 00 11 10 #14

&11 11 00 10 #-14

-----

00 00 00 10 # 2

print(14&-14)

print(5&-5)

2

1 乙個數的二進位制表示可以看作是乙個集合(0 表示不在集合中,1 表示在集合中)。

比如集合,可以表示成01 00 01 10 10而對應的位運算也就可以看作是對集合進行的操作。

元素與集合的操作:

a | (1《集合之間的操作:

a 補 # ~a

a 交 b # a & b

a 並 b # a | b

a 差 b # a & (~b)

注意:整數在記憶體中是以補碼的形式存在的,輸出自然也是按照補碼輸出。

【例】 python 的bin()輸出。

print(bin(3))  # 0b11

print(bin(-3)) # -0b11

print(bin(-3 & 0xffffffff)) # 0b11111111111111111111111111111101

print(bin(0xfffffffd)) # 0b11111111111111111111111111111101

print(0xfffffffd) # 4294967293

0b11

-0b11

0b11111111111111111111111111111101

0b11111111111111111111111111111101

4294967293 

從結果可以看出:

python中bin乙個負數(十進位制表示),輸出的是它的原碼的二進位制表示加上個負號。

python中的整型是補碼形式儲存的。

Python基礎入門 集合 阿里雲天池

集合 python 中set與dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。注意,key為不可變型別,即可雜湊的值。例子 num print type num num print type num 集合的建立 先建立物件再加入元素。在...

函式 阿里雲天池

與數學中的函式不同,在python中,函式不是看上去冰冷無聊的規則和公式,而是有實打實的 有自己作用的 比如說當我們需要實現 列印 這個功能,我們會用到print 當我們需要實現 獲取資料長度 這個功能,我們會要到len 這些都是設定好了,可以直接拿過來就用的功能,這就叫做 組織好的 定義函式的語法...

Python基礎入門 列表和元組 阿里雲天池

簡單資料型別 整型浮點型 布林型容器資料型別 列表元組 字典集合 字串在python語言中,是用中括號 來解析列表的。列表中的元素可以是數學 字串 列表 元組等。建立乙個列表,只要把逗號分隔的不同資料項使用中括號括起來即可。例如 list1 天貓 2007 2019 2020 list2 1 2,3...