cs231n---Python Numpy教程(第一彈)
基本資料型別(程式碼基於Python 3)
和大多數程式語言一樣,擁有基本資料型別:整型,浮點型,布林型和字串等
數字:整型與浮點型的使用與其他語言類似
x = 3
print(type(x))
print (x)
y = 2.5
print(type(y))
print(y, y + 1, y * 2, y ** 2)
布林型:實現所有的布林邏輯用的是英語而不是操作符(&&,||)
t = True
f = False
print(type(t))
print(t and f)
print(t or f)
print(not t)
print(t != f)
字串:Python對於字串的支援很棒!
# 字串
h = 'hello'
w = 'world'
print(h)
print(w)
print(len(h)) # String length 返回字串長度
hw = h + ' ' + w # 字串拼接
print(hw)
hw12 = '%s %s %d' % (h, w, 12)
print(hw12)
拼接, 輸出多個 都OK
字串還有一些有用的方法,比如:
s = 'hello' print(s.capitalize()) #首字母大寫 print(s.upper()) #全部大寫 print(s.rjust(7)) print(s.center(7)) print(s.replace('l','(ell)')) # 替換所有字母l print(' world') print(' world'.strip()) # 刪除前面空格,頂前
Containers(譯為:容器):list, dictionary,set,tuple
list
列表是python中的陣列,長度可變且能包含不同型別元素
# 列表list
xs = [3, 1, 2] #建立列表
print(xs, xs[2], xs[0]) # index 索引從0開始
print(xs[-1]) # 倒數第一個
xs[2] = 'foo' # 替換list中第三個元素
print(xs)
xs.append('bar') # 最後面加元素
print(xs)
x = xs.pop() # 刪除最後一個元素
print(x, xs)
切片Slicing:為了一次性獲取列表中的元素,python提供了一種簡潔的語法——切片slicing
# 切片slicing
nums =[0, 1, 2, 3, 4]
print(nums)
print(nums[2:4]) # 取索引2,3 即第3個和第4個,最後一個取不到
print(nums[2:]) # 從索引2 即第3個取到最後
print(nums[:2]) # 從頭取到索引1,即第2個,取不到索引2
print(nums[:]) # 取所有
print(nums[:-1]) # 從頭取除了最後一個
nums[2:4] = [8, 9] # 替換
print(nums)
在Numpy庫中,還會再次接觸到切片
迴圈loops:我們可以遍歷列表中的每一個元素
# 迴圈loops,遍歷每一個元素
animals = ['cat', 'dog', 'monkey']
for animal in animals:
print(animal)
若想訪問每個元素的指標,使用內建的enumerate函式
# 迴圈,訪問每個元素的指標,使用內建的enumerate函式
animals = ['cat', 'dog', 'monkey']
for idx, animal in enumerate(animals):
print('#%d: %s' % (idx, animal))
列表推導List comprehensions:我們想把一種資料型別轉換為另一種。
例子:把列表中每個元素將其平方
nums = [0, 1, 2, 3, 4]
squares = []
for x in nums:
squares.append(x ** 2)
print(squares)
使用列表推導,程式碼會簡化很多:
# List comprehensions
nums = [0, 1, 2, 3, 4]
squares = [x ** 2 for x in nums]
print(squares)
列表推導還可以包含條件:
# 包含條件的List comprehensions
nums = [0, 1, 2, 3, 4]
even_squares = [x ** 2 for x in nums if x % 2 == 0]
print(even_squares)
字典dictionary
字典用來儲存對(鍵,值):
# 字典
d = {'cat': 'cute', 'dog': 'furry'} # 建立一個字典
print(d['cat']) # 得到鍵cat的值cute
print('cat' in d) # 判斷鍵cat是否在字典d中
d['fish'] = 'wet'
print(d['fish'])
print(d.get('monkey', 'N/A')) # 得到預設值,若沒有則N/A
print(d.get('fish', 'N/A'))
del d['fish'] # 刪除
print(d.get('fish', 'N/A'))
迴圈loops:在字典中,用鍵來迭代更加容易
# 迴圈loops:在字典中,用鍵來迭代更加容易
d = {'person': 2, 'cat': 4, 'spider': 8}
for animal in d:
print(animal)
legs = d[animal]
print('A %s has %d legs' % (animal, legs))
若訪問鍵和對應的值使用iteritems方法(python2),python3中更改為items方法:
# 訪問鍵和對應的值使用iteritems方法(pyhon2),python3中更改為items方法:
d = {'person':2, 'cat': 4, 'spider': 8}
#for animal, legs in d.iteritems():
for animal, legs in d.items():
print('A %s has %d legs' %(animal, legs))
字典推導Dictionary comprehensions:和列表推導類似,但是允許你方便地構建字典
nums = [0, 1, 2, 3, 4]
even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}
print(even_num_to_square)
集合Sets
集合是獨立不同個體的無序集合。
# 集合sets
animals = {'cat', 'dog'}
print('cat' in animals)
print('fish' in animals)
animals.add('fish')
print('fish' in animals)
print(len(animals))
animals.add('cat')
print(len(animals))
animals.remove('cat')
print(len(animals))
迴圈loops:在集合中迴圈的語法和列表一樣,但集合是無序的所以訪問集合元素的時候,不能做關於順序的假設。
animals = {'cat', 'dog', 'fish'}
for idx, animal in enumerate(animals):
print('%#d: %s' %(idx + 1 , animal))
集合推導Set comprehension :和字典一樣,可以很方便的構建集合
# 集合推導
from math import sqrt
nums = {int(sqrt(x)) for x in range(30)}
print(nums)
元組Tuples
元組是一個值的所有序列表(不可改變)。和列表的不同:元組可以作為字典中的鍵和集合的元素,列表不行。
# 元組()
d = {(x, x + 1): x for x in range(10)}
print(d)
t = (5, 6)
print(type(t))
print(d[t])
print(d[(1,2)])
函式Function
# def 來定義函式
def sign(x):
if x > 0:
return 'positive'
elif x < 0:
return 'negative'
else:
return 'zero'
for x in [-1, 0, 1]:
print(sign(x))
常用可選引數來定義函式
# def 可選引數來定義函式
def hello(name, loud=False):
if loud:
print('HELLO, %s' % (name.upper()))
else:
print('Hello, %s!' % (name))
hello('Bob')
hello('Fred', loud=True)
類Class
# 類 Class
class Greeter(object):
# Constructor
def __init__(self, name):
self.name = name # create an instance variable
# Instance method
def greet(self, loud=False):
if loud:
print('HELLO, %s' % self.name.upper())
else:
print('hello, %s' % self.name)
g = Greeter('Fred') # construct an instance of the Greeter class
g.greet() # call an instance method print "hello, Fred"
g.greet(loud=True) # print "HELLO, FRED"
以上內容轉載整理來自知乎專欄點選開啟連結,侵刪侵刪。