作業描述: 能動態繪製不同尺寸的ASCII-table
Task Decription:
1. Generate a random list of size 50.It contains random values from 1 to 50.2. Dynamically draw a ASCII table according to the dimensions of table
作業描述: 能動態繪製不同尺寸的ASCII-table
Task Decription:
1. Generate a random list of size 50.It contains random values from 1 to 50.
#Install required packages
pip install flask==2.1.1
pip install Pillow==9.1.0
pip install tensorflow==2.3.1
pip install keras==2.4.3
在python 世界裡, 宣告的變數僅僅只是一個tag。而tag 可以到處貼, 所以當你問 tag 的資料型態時 , 那就是在問tag 當下所貼的位置的物件資料型態為何 ?
a=3 , 則 type(a)==> int
b=3.14 , 則 type(b)==> float
c="hello" , 則 type(c)==> str
3, 3.14, "hello" 這都是物件, 佔有空間 ,而a, b, c 就是tag name, 只是一個名字用來存取物件而已。
python 的變數完全不同於C/C++ 變數的概念。C/C++ 變數是佔有空間的, 空間存放著資料, 而空間有多大就決定了資料的數值範圍。
int a=64; (佔4個bytes)
char ch='A'; (佔1個bytes)
你可能會問一個問題, Python 的變數用這樣搞有什麼好處?
用個例子說明好了, a=[1,2,3]
若要複製一份給c, 執行 c=a.copy() 就會將a的container 表格複製給c, 因為只是複製了container a 表格, 和資料物件多大沒有關係, 所以可以很快,也不用將相同的資料物件在記憶體中放兩份。若是C/C++ 則a, c 是各別的空間, 因此即使是相同的資料,在記憶體中也得各自存放一份,會比較佔空間,而且在複製資料時也得一個個byte 複製過去 ( memcpy),速度上也比較慢。
(1) 用frozenset 才可以用集合當作Key
Example:
itemsets=[{'B','C'},{'D'}]
count[{'B','C'}]+=1 # Error : "unhashable type: 'set'"
in this case, we can use frozenset to make 'set' as a key
count[frozenset({'B','C'})]=1
(2) 用frozenset 才可以做集合包含集合
S=set()
e={'A','B','C'}
S.add (e) ==> 想要表示 S={{'A'},{'B'},{'C'}} --> TypeError: unhashable type: 'set'
S.add (frozenset(e)) -->OK S={frozenset({'A', 'B', 'C'})}