天池龍珠計畫Python訓練營 第一天

2021-10-24 09:01:30 字數 2957 閱讀 9506

有幸參加了阿里雲舉辦的天池龍珠計畫python訓練營。收穫頗多。

每天記錄一些自己之前的知識盲點,需經常溫習。

一、運算子

【例子】比較的兩個變數均指向不可變型別。

對於字串來說:

a = "hello"

b = "hello"

print(a is b, a == b) # true true

print(a is not b, a != b) # false false

【例子】比較的兩個變數均指向可變型別。

對於list來說:

a = ["hello"]

b = ["hello"]

print(a is b, a == b) # false true

print(a is not b, a != b) # true false

注意:

- 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']

有時候我們想保留浮點型的小數點後 `n` 位。可以用 `decimal` 包裡的 `decimal` 物件和 `getcontext()` 方法來實現。

import decimal

from decimal import decimal

a = decimal.getcontext()

print(a)

# context(prec=28, rounding=round_half_even, emin=-999999, emax=999999,

# capitals=1, clamp=0, flags=,

# traps=[invalidoperation, divisionbyzero, overflow])

b = decimal(1) / decimal(3)

print(b)

# 0.3333333333333333333333333333

#【例子】使 1/3 保留 4 位,用 `getcontext().prec` 來調整精度。

decimal.getcontext().prec = 4

c = decimal(1) / decimal(3)

print(c)

# 0.3333

三、位運算

【例子】 python 的`bin()` 輸出。

print(bin(3))  # 0b11

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

print(bin(-3 & 0xffffffff))

# 0b11111111111111111111111111111101

print(bin(0xfffffffd))

# 0b11111111111111111111111111111101

print(0xfffffffd) # 4294967293

是不是很顛覆認知,我們從結果可以看出:

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

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

- python中整型是不限制長度的不會超範圍溢位。

所以為了獲得負數(十進位制表示)的補碼,需要手動將其和十六進製制數`0xffffffff`進行按位與操作,再交給`bin()`進行輸出,得到的才是負數的補碼表示。

天池龍珠計畫Python訓練營 第六天

有幸參加了阿里雲舉辦的天池龍珠計畫python訓練營。收穫頗多。每天記錄一些自己之前的知識盲點,需經常溫習。一 集合 1 集合的建立 在建立空集合的時候只能使用s set 因為s 建立的是空字典。例子 basket set basket.add banana num print type num n...

天池龍珠計畫Python訓練營 第五天

有幸參加了阿里雲舉辦的天池龍珠計畫python訓練營。收穫頗多。每天記錄一些自己之前的知識盲點,需經常溫習。一 字串 1 字串轉換 maketrans intab,outtab 建立字元對映的轉換表,第乙個引數是字串,表示需要轉換的字元,第二個引數也是字串表示轉換的目標。translate tabl...

龍珠計畫Python訓練營筆記 day10

美國 練習 按州總捐款熱力地圖 參賽選手自由發揮 補充 第乙個補充熱力地圖的參賽選手可以獲得天池杯子乙個 呼叫相關包 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns 設定畫布大小 f,ax plt.s...