Python/ target=_blank class=infotextkey>Python是一種高級編程語言,它簡單易讀并且具有很多強大的功能。下面是Python的基本類型和語法:
基本類型
整數(int):例如1、2、3;
浮點數(float):例如3.5、4.2、5.7;
布爾值(bool):True或False,用于判斷真假;
字符串(str):由單引號或雙引號括起來的字符序列,例如"hello"、'world'。
變量
用于存儲數據,并可以隨時更改;
變量名必須以字母或下劃線開頭,不能以數字開頭;
變量名不能是Python的保留關鍵字(例如if、else、while等)。
運算符
算術運算符:+、-、*、/、%、**(分別表示加、減、乘、除、取模、冪運算);
關系運算符:<、>、<=、>=、==、!=(分別表示小于、大于、小于等于、大于等于、等于、不等于);
邏輯運算符:and、or、not(分別表示與、或、非)。
控制結構
條件語句:if、elif、else(用于判斷條件是否成立);
循環語句:for、while(用于反復執行一段代碼)。
例如,以下是一個簡單Python程序的代碼:
# 定義變量
a = 3
b = 4.5
c = True
d = "hello"
# 打印變量的類型和值
print(type(a), a)
print(type(b), b)
print(type(c), c)
print(type(d), d)
# 進行數值運算
e = a + b
f = b / a
g = a ** 2
# 打印計算結果
print(e)
print(f)
print(g)
# 判斷條件
if a > b:
print("a > b")
elif a < b:
print("a < b")
else:
print("a = b")
# 循環語句
for i in range(5):
print(i)
i = 0
while i < 5:
print(i)
i += 1
輸出結果:
<class 'int'> 3
<class 'float'> 4.5
<class 'bool'> True
<class 'str'> hello
7.5
1.5
9
a < b
0
1
2
3
4
0
1
2
3
4
字符串
在Python中,字符串是一種數據類型,表示由一個或多個字符組成的不可變的序列。字符串可以使用單引號、雙引號或三引號(單引號或雙引號)括起來。例如:
# 字符串定義示例
str1 = 'Hello, World!'
str2 = "Python is fun."
str3 = """This is a multiline
string."""
Python提供了許多內置的字符串方法,例如split()、join()、strip()等,這些方法可以方便地對字符串進行操作和處理。 除此之外,還可以使用格式化字符串來將變量值插入到字符串中,常見的格式化方法包括使用%、.format()和f-字符串等。
容器
在Python中,容器是一種可以裝載多個數據元素的對象。Python提供了許多種不同類型的容器對象,常見的包括字符串、列表、元組、字典、集合等。下面是一些示例代碼,演示如何創建并使用不同類型的容器:
下面是一些示例代碼,演示如何創建并使用不同類型的容器:
1、列表:
# 創建一個列表
my_list = [1, 2, "hello", 3.5]
# 訪問列表中的元素
print(my_list[0]) # 1
print(my_list[2]) # "hello"
# 修改列表中的元素
my_list[3] = 4.2
print(my_list) # [1, 2, "hello", 4.2]
# 添加元素到列表尾部
my_list.Append("world")
print(my_list) # [1, 2, "hello", 4.2, "world"]
# 在指定位置插入元素
my_list.insert(2, "Python")
print(my_list) # [1, 2, "Python", "hello", 4.2, "world"]
# 刪除列表中的元素
my_list.remove(2)
print(my_list) # [1, "Python", "hello", 4.2, "world"]
2、元組
# 創建一個元組
my_tuple = (1, 2, "hello", 3.5)
# 訪問元組中的元素
print(my_tuple[0]) # 1
print(my_tuple[2]) # "hello"
# 元組不支持修改操作,以下代碼會導致錯誤
my_tuple[3] = 4.2
# 獲取元素在元組中的位置
print(my_tuple.index("hello")) # 2
# 獲取元組中某個元素出現的次數
print(my_tuple.count(3.5)) # 1
3、字典
# 創建一個字典
my_dict = {"name": "Tom", "age": 18, "gender": "male"}
# 訪問字典中的元素
print(my_dict["name"]) # "Tom"
print(my_dict.get("age")) # 18
# 修改字典中的元素
my_dict["gender"] = "female"
print(my_dict) # {"name": "Tom", "age": 18, "gender": "female"}
# 添加新的鍵值對到字典中
my_dict["grade"] = 90
print(my_dict) # {"name": "Tom", "age": 18, "gender": "female", "grade": 90}
# 刪除字典中的鍵值對
del my_dict["age"]
print(my_dict) # {"name": "Tom", "gender": "female", "grade": 90}
4、集合
# 創建一個集合
my_set = {1, 2, "hello", 3.5}
# 訪問集合中的元素,注意集合中的元素是無序的,每次輸出結果可能不同
print(my_set) # {1, 2, "hello", 3.5}
# 將列表轉換為集合
new_set = set([1, 2, 2, 3, 4, 4])
print(new_set) # {1, 2, 3, 4}
# 添加元素到集合中
my_set.add("world")
print(my_set) # {1, 2, "hello", 3.5, "world"}
# 刪除集合中的元素
my_set.remove(1)
print(my_set) # {2, "hello", 3.5, "world"}
循環控制
Python 的循環控制是指可以讓程序進行循環執行的結構,常用的循環結構包括 for 循環和 while 循環。下面分別給出這兩種循環結構的示例代碼:
for 循環:是一種常見的循環結構,通常用于對一個序列或者集合中的每一個元素進行遍歷操作,代碼示例:
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print(fruit)
這段代碼中,定義了一個列表 fruits,然后通過 for 循環對列表中的每一個元素進行遍歷,并使用 print() 函數打印出來。輸出結果為:
apple
banana
orange
while 循環:也是一種常見的循環結構,在滿足某個條件時會一直執行,代碼示例:
i = 1
while i <= 5:
print(i)
i += 1
這段代碼中,首先定義一個變量 i 的初始值為 1,然后再 while 循環中設置一個條件,當 i 小于或等于 5 時,就一直執行循環體中的語句。循環體中的語句是打印當前 i 的值,并將 i 的值加 1。輸出結果為:
1
2
3
4
5
另外再提一個,for a in array循環表達式:用來遍歷一個數據序列,比如列表、元組或字符串,具體使用方法如下:
array = [1, 2, 3, 4, 5]
# 遍歷列表
for a in array:
print(a) # 輸出 1, 2, 3, 4, 5
# 遍歷元組
my_tuple = (6, 7, 8, 9, 10)
for a in my_tuple:
print(a) # 輸出 6, 7, 8, 9, 10
# 遍歷字符串
my_str = 'hello'
for a in my_str:
print(a) # 輸出 h, e, l, l, o
以上代碼示例展示了如何使用for a in array循環表達式來遍歷不同類型的數據序列。每次循環中,變量a被賦值為序列中的一個元素,程序依次對每個元素執行相同的操作,直到所有元素都被遍歷完成。
列表推導式
是Python語言用來從一個可迭代對象中創建列表的一種簡介方式。它由一個方括號包裹,包含一條或多條表達式,并可以在其中使用if語句和for循環。例如,以下是使用列表推導式創建一組日期示例:
# 使用列表推導式生成2021年1月的所有日期
dates = [f'2021-01-{d:02}' for d in range(1, 32)]
# 打印結果
print(dates)
輸出:
['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08', '2021-01-09', '2021-01-10', '2021-01-11', '2021-01-12', '2021-01-13', '2021-01-14', '2021-01-15', '2021-01-16', '2021-01-17', '2021-01-18', '2021-01-19', '2021-01-20', '2021-01-21', '2021-01-22', '2021-01-23', '2021-01-24', '2021-01-25', '2021-01-26', '2021-01-27', '2021-01-28', '2021-01-29', '2021-01-30', '2021-01-31']
上面的代碼中,使用了for循環來遍歷1到31的數字,并結合f字符串格式化來生成日期字符串,最后使用列表推導式構建了一個包含所有日期的列表。
為了對應交易日期與收盤價格,使用tuple元組來封裝上面結構,zip同時迭代多個序列,每次分別從一個序列中取一個元素,一旦其中某個序列到達結尾,則迭代宣告結束。那么我們可以將每個日期和收盤價格封裝為一個元組,然后使用zip()函數同時迭代這兩個序列,代碼示例:
dates = ('2021-01-01', '2021-01-02', '2021-01-03')
prices = (128.8, 131.1, 129.5)
data = zip(dates, prices)
for d, p in data:
print(d, p)
輸出結果為:
2021-01-01 128.8
2021-01-02 131.1
2021-01-03 129.5
這樣我們就可以在每個迭代中同時取出一個日期和一個收盤價格,一一對應地處理它們,而且在任何一個序列到達結尾時都會自動結束迭代。同時,我們也可以通過data對象直接遍歷所有元組,在每個迭代中處理每個日期和其對應的收盤價格。另外還可以使用namedtuple來改進代碼,使得元組中的元素具有更明確的含義和方便的訪問方式。例如:
from collections import namedtuple
Stock = namedtuple('Stock', ['date', 'price'])
dates = ('2021-01-01', '2021-01-02', '2021-01-03')
prices = (128.8, 131.1, 129.5)
stocks = [Stock(date, price) for date, price in zip(dates, prices)]
for stock in stocks:
print(stock.date, stock.price)
在這個例子中,我們使用namedtuple創建了一個名為Stock的類,并指定其屬性為'date'和'price',這可以使得元組中的元素具有更清晰的含義。然后我們創建了一個包含namedtuple元素的列表,并使用for循環來遍歷每個namedtuple。這種方式使代碼更具可讀性,同時也更便于后續的數據操作。運行上述代碼的輸出結果是:
2021-01-01 128.8
2021-01-02 131.1
2021-01-03 129.5
字典推導式(dictionary comprehension)
是一種用來快速創建新字典的語法結構。可以使用一種基于現有字典元素或其他可遍歷對象的簡潔方式來生成新的字典。以下是使用字典推導式改進上面的代碼:
from collections import namedtuple
Stock = namedtuple('Stock', ['date', 'price'])
dates = ('2021-01-01', '2021-01-02', '2021-01-03')
prices = (128.8, 131.1, 129.5)
stocks = {date: price for date, price in zip(dates, prices)}
stocks = {date: Stock(date, price) for date, price in stocks.items()}
for stock in stocks.values():
print(stock.date, stock.price)
在改進后的代碼中,將 namedtumple 對象用字典類型來保存,使用字典推導式先生成一組鍵值對(日期和價格)的字典。然后再用另一條字典推導式構建 namedtumple 對象,最后可以直接遍歷字典的值以獲取鍵值對的數據。
有序字典(OrderedDict)
Python 標準庫中的 collections 模塊提供了一個名為 OrderedDict 的有序字典類型。與普通字典不同,OrderedDict 記錄了元素添加的順序,因此可以在迭代時保持這個順序,并支持一些有序字典專屬的方法(如 popitem(last=True) 可以移除最后添加的元素)。
可以使用 collections 模塊中的 OrderedDict 類型來對上面的代碼進行改進:
from collections import OrderedDict, namedtuple
Stock = namedtuple('Stock', ['date', 'price'])
dates = ('2021-01-01', '2021-01-02', '2021-01-03')
prices = (128.8, 131.1, 129.5)
stocks = {date: price for date, price in zip(dates, prices)}
stocks = OrderedDict((date, Stock(date, price)) for date, price in stocks.items())
for stock in stocks.values():
print(stock.date, stock.price)
將 stocks 字典轉化為了 OrderedDict 實例。與普通字典不同,OrderedDict 會記住元素添加的順序并在迭代時保持這個順序,輸出結果可以保證有序。
以上是對Python的基礎語法與數據結構做了一個說明,下一期我們將繼續對Python函數進行講解。