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