Python中l(wèi)ist、tuple和set三大容器的相互轉(zhuǎn)換技巧
引言
在Python的世界里,容器(Containers)就像魔法背包,幫我們高效地組織和處理數(shù)據(jù)。作為Python開發(fā)者,你一定熟悉list、tuple和set這三大基礎(chǔ)容器。但你是否曾為如何在它們之間靈活轉(zhuǎn)換而困惑?比如,想把一個(gè)可變的列表變成不可變的元組,或者需要快速去除重復(fù)項(xiàng)時(shí)將列表轉(zhuǎn)為集合?掌握它們的相互轉(zhuǎn)換技巧,能讓你的代碼更簡(jiǎn)潔、高效,避免重復(fù)造輪子!
本篇博客將深入探討list、tuple和set的相互轉(zhuǎn)換邏輯,通過大量實(shí)戰(zhàn)代碼示例、關(guān)鍵注意事項(xiàng)和可視化圖表,幫你徹底打通容器轉(zhuǎn)換的任督二脈。無論你是Python新手還是想鞏固基礎(chǔ)的老手,這里都有你需要的干貨!我們會(huì)覆蓋所有6種轉(zhuǎn)換路徑(list→tuple、list→set、tuple→list等),分析性能陷阱,并分享高級(jí)技巧。準(zhǔn)備好了嗎?Let’s dive in!
為什么容器轉(zhuǎn)換如此重要?
在Python中,list、tuple和set雖同為容器,但設(shè)計(jì)哲學(xué)截然不同:
list:有序、可變、允許重復(fù)項(xiàng)。像一個(gè)靈活的待辦清單,隨時(shí)增刪改。tuple:有序、不可變、允許重復(fù)項(xiàng)。像一份已簽名的合同,內(nèi)容固定不可更改。set:無序、可變、自動(dòng)去重。像一個(gè)獨(dú)特的郵票收藏冊(cè),重復(fù)項(xiàng)會(huì)被自動(dòng)丟棄。
實(shí)際開發(fā)中,我們常需在它們之間切換:
- 將API返回的
list轉(zhuǎn)為tuple以確保數(shù)據(jù)安全(防止意外修改) - 用
set快速去重后轉(zhuǎn)回list進(jìn)行排序操作 - 將數(shù)據(jù)庫查詢結(jié)果(
tuple)轉(zhuǎn)為list以便動(dòng)態(tài)調(diào)整
關(guān)鍵洞察:轉(zhuǎn)換不僅是語法操作,更是數(shù)據(jù)語義的轉(zhuǎn)換。理解每種容器的特性,才能避免"轉(zhuǎn)換后數(shù)據(jù)意外丟失"的坑!
Python官方文檔 Data Structures教程 強(qiáng)調(diào):容器的選擇直接影響代碼的健壯性和性能。下面我們先快速回顧核心特性,再進(jìn)入轉(zhuǎn)換實(shí)戰(zhàn)。
?? 三大容器核心特性對(duì)比
| 特性 | list | tuple | set |
|---|---|---|---|
| 可變性 | ? 可變 | ? 不可變 | ? 可變 |
| 有序性 | ? 有序 | ? 有序 | ? 無序 |
| 重復(fù)項(xiàng) | ? 允許 | ? 允許 | ? 自動(dòng)去重 |
| 典型用途 | 動(dòng)態(tài)數(shù)據(jù)集 | 固定配置/鍵值 | 唯一性檢查/成員測(cè)試 |
注意:set的無序性意味著轉(zhuǎn)換后元素順序無法保證!這是轉(zhuǎn)換中最易踩的坑。
list → tuple:鎖定數(shù)據(jù)的黃金轉(zhuǎn)換
將list轉(zhuǎn)為tuple是最常見的轉(zhuǎn)換之一。當(dāng)你需要確保數(shù)據(jù)在傳遞過程中不被修改時(shí)(比如作為字典的鍵或函數(shù)參數(shù)),tuple是理想選擇。轉(zhuǎn)換語法極其簡(jiǎn)單:
my_list = [1, 2, 3, "a", "b"]
my_tuple = tuple(my_list) # 關(guān)鍵:使用tuple()構(gòu)造函數(shù)
print("Original list:", my_list) # [1, 2, 3, 'a', 'b']
print("Converted tuple:", my_tuple) # (1, 2, 3, 'a', 'b')
print("Type check:", type(my_tuple)) # <class 'tuple'>
為什么選擇這種轉(zhuǎn)換?
- 數(shù)據(jù)保護(hù):
tuple不可變,防止意外修改。 - 性能提升:
tuple比list占用更少內(nèi)存(尤其在大型數(shù)據(jù)集時(shí))。 - 哈希支持:
tuple可作為字典鍵,而list不能(試試{{my_list}: "value"}會(huì)報(bào)錯(cuò)?。?/li>
關(guān)鍵注意事項(xiàng)
嵌套容器不會(huì)遞歸轉(zhuǎn)換:
nested_list = [1, [2, 3], (4, 5)] nested_tuple = tuple(nested_list) print(nested_tuple) # (1, [2, 3], (4, 5)) → 子列表仍是list!
需要手動(dòng)遞歸轉(zhuǎn)換子容器(見后文高級(jí)技巧)。
空容器轉(zhuǎn)換:
empty_tuple = tuple([]) # 返回空元組 ()
實(shí)戰(zhàn)場(chǎng)景:API響應(yīng)數(shù)據(jù)固化
假設(shè)你從API獲取用戶ID列表,需作為緩存鍵:
import requests
response = requests.get("https://api.example.com/users")
user_ids = response.json()["ids"] # 假設(shè)返回 [101, 102, 103]
# 轉(zhuǎn)為tuple作為緩存鍵(list不能作為字典鍵?。?
cache_key = tuple(user_ids)
cache = {cache_key: "user_data"} # 安全操作 ?
list → set:一鍵去重的魔法
當(dāng)需要快速消除重復(fù)項(xiàng)時(shí),list轉(zhuǎn)set是最高效的解決方案。set的底層哈希實(shí)現(xiàn)使去重操作平均時(shí)間復(fù)雜度為O(n),遠(yuǎn)快于手動(dòng)循環(huán)檢查。
colors = ["red", "blue", "green", "blue", "yellow", "red"]
unique_colors = set(colors)
print("Original list:", colors) # ['red', 'blue', 'green', 'blue', 'yellow', 'red']
print("Unique set:", unique_colors) # {'red', 'blue', 'green', 'yellow'} → 重復(fù)項(xiàng)消失!
print("Type check:", type(unique_colors)) # <class 'set'>
轉(zhuǎn)換背后的科學(xué)
- 自動(dòng)去重:
set通過哈希值判斷唯一性,相同值的元素只保留一個(gè)。 - 順序丟失:輸出順序不保證與原列表一致(Python 3.7+保留插入順序,但官方不推薦依賴此特性)。
性能對(duì)比實(shí)驗(yàn)
測(cè)試10,000個(gè)元素的去重速度:
import timeit
# 生成含重復(fù)項(xiàng)的列表
test_list = list(range(5000)) * 2 # 10,000元素,50%重復(fù)
# 方法1:用set去重
set_time = timeit.timeit('set(test_list)', globals=globals(), number=1000)
# 方法2:手動(dòng)循環(huán)去重
def manual_unique(lst):
seen = []
for item in lst:
if item not in seen:
seen.append(item)
return seen
manual_time = timeit.timeit('manual_unique(test_list)', globals=globals(), number=1000)
print(f"Set去重耗時(shí): {set_time:.4f}秒")
print(f"手動(dòng)去重耗時(shí): {manual_time:.4f}秒")
# 典型輸出:Set去重耗時(shí): 0.0215秒 vs 手動(dòng)去重耗時(shí): 4.8123秒 → 快200倍!
常見陷阱:可哈希性要求
set要求所有元素必須是可哈希的(Hashable)。如果列表包含不可哈希對(duì)象(如字典、列表),轉(zhuǎn)換會(huì)失?。?/p>
invalid_list = [1, {"key": "value"}, [2, 3]]
# set(invalid_list) → 報(bào)錯(cuò):TypeError: unhashable type: 'dict'
解決方案:
對(duì)于字典:轉(zhuǎn)為frozenset或元組
dict_list = [{"id": 1}, {"id": 2}]
hashable_set = set(tuple(d.items()) for d in dict_list) # 轉(zhuǎn)為元組集合
對(duì)于列表:先轉(zhuǎn)為元組
nested_list = [[1,2], [3,4]] tuple_set = set(tuple(sub) for sub in nested_list)
tuple → list:釋放數(shù)據(jù)的靈活性
當(dāng)需要修改一個(gè)原本不可變的tuple時(shí)(比如添加/刪除元素),轉(zhuǎn)為list是唯一途徑。轉(zhuǎn)換同樣簡(jiǎn)單:
coordinates = (10.5, 20.3, 30.1)
coord_list = list(coordinates) # 使用list()構(gòu)造函數(shù)
print("Original tuple:", coordinates) # (10.5, 20.3, 30.1)
print("Converted list:", coord_list) # [10.5, 20.3, 30.1]
# 現(xiàn)在可以安全修改!
coord_list.append(40.7)
print("Modified list:", coord_list) # [10.5, 20.3, 30.1, 40.7]
為什么需要這種轉(zhuǎn)換?
- 動(dòng)態(tài)操作:
list支持append()、insert()、pop()等方法。 - 函數(shù)兼容:某些庫函數(shù)(如
sorted())要求可變序列。 - 數(shù)據(jù)預(yù)處理:清洗數(shù)據(jù)時(shí)需臨時(shí)修改。
重要警告:引用陷阱!
tuple轉(zhuǎn)list是淺拷貝(Shallow Copy)。如果tuple包含可變對(duì)象(如列表),修改子列表會(huì)影響原tuple:
nested_tuple = (1, [2, 3], {"a": 4})
nested_list = list(nested_tuple)
nested_list[1].append(99) # 修改子列表
print(nested_tuple[1]) # [2, 3, 99] → 原tuple的子列表也被修改!
安全方案:使用copy模塊進(jìn)行深拷貝:
import copy safe_list = copy.deepcopy(nested_tuple) safe_list[1].append(100) print(nested_tuple[1]) # [2, 3, 99] → 原數(shù)據(jù)不受影響
實(shí)戰(zhàn)場(chǎng)景:數(shù)據(jù)庫記錄處理
從數(shù)據(jù)庫獲取的元組需動(dòng)態(tài)調(diào)整:
# 模擬數(shù)據(jù)庫查詢結(jié)果(每行是tuple)
db_results = [(1, "Alice"), (2, "Bob"), (3, "Charlie")]
# 轉(zhuǎn)為list以便添加新字段
user_list = [list(row) for row in db_results]
for user in user_list:
user.append("active") # 添加狀態(tài)字段
print(user_list) # [[1, 'Alice', 'active'], ...]
tuple → set:去重與成員測(cè)試加速
將tuple轉(zhuǎn)為set主要用于快速去重或高效成員檢查(in操作)。由于tuple本身不可變,轉(zhuǎn)換過程比list更安全:
status_codes = (200, 404, 200, 500, 403)
unique_codes = set(status_codes)
print("Original tuple:", status_codes) # (200, 404, 200, 500, 403)
print("Unique set:", unique_codes) # {200, 404, 500, 403}
print("404 in set?", 404 in unique_codes) # True → 成員檢查O(1)時(shí)間!
性能優(yōu)勢(shì)詳解
成員檢查:set的in操作平均O(1)時(shí)間,而tuple需O(n)遍歷。
big_tuple = tuple(range(1000000)) big_set = set(big_tuple) %timeit 999999 in big_tuple # ~10ms (線性搜索) %timeit 999999 in big_set # ~0.01ms (哈希查找)
- 去重效率:與
list轉(zhuǎn)set相同,但避免了tuple不可變導(dǎo)致的中間拷貝。
實(shí)際應(yīng)用:網(wǎng)絡(luò)請(qǐng)求狀態(tài)分析
快速統(tǒng)計(jì)API響應(yīng)狀態(tài):
response_times = (0.2, 0.5, 0.2, 1.0, 0.3) # 模擬響應(yīng)時(shí)間元組
unique_times = set(response_times)
print(f"總請(qǐng)求數(shù): {len(response_times)}")
print(f"唯一響應(yīng)時(shí)間: {len(unique_times)}")
print(f"最快響應(yīng): {min(unique_times)}s") # 0.2
set → list:恢復(fù)順序與索引訪問
當(dāng)需要對(duì)唯一元素集合進(jìn)行排序、切片或索引操作時(shí),必須轉(zhuǎn)回list(因?yàn)?code>set無序且不支持索引)。轉(zhuǎn)換保留唯一性但丟失原始順序:
unique_numbers = {5, 1, 3, 2, 4}
number_list = list(unique_numbers)
print("Original set:", unique_numbers) # {1, 2, 3, 4, 5} (順序可能不同)
print("Converted list:", number_list) # [1, 2, 3, 4, 5] → 順序不保證一致!
控制轉(zhuǎn)換后的順序
雖然set本身無序,但可通過sorted()恢復(fù)邏輯順序:
# 按數(shù)字升序
sorted_list = sorted(unique_numbers) # [1, 2, 3, 4, 5]
# 按字符串長(zhǎng)度降序(自定義key)
words = {"apple", "banana", "cherry"}
sorted_words = sorted(words, key=len, reverse=True) # ['banana', 'cherry', 'apple']
關(guān)鍵陷阱:可變性丟失
set是可變的,但轉(zhuǎn)換后的list也是可變的。修改list不會(huì)影響原set(與tuple不同):
s = {1, 2, 3}
l = list(s)
l.append(4)
print(s) # {1, 2, 3} → 原set不變
實(shí)戰(zhàn)場(chǎng)景:用戶標(biāo)簽處理
從唯一標(biāo)簽集合生成有序報(bào)告:
user_tags = {"python", "data", "ml", "ai", "web"}
# 轉(zhuǎn)為排序列表生成報(bào)告
report_tags = sorted(user_tags, key=str.lower) # 按字母排序
print("Top tags:", ", ".join(report_tags)) # "ai, data, ml, python, web"
set → tuple:創(chuàng)建不可變唯一集合
當(dāng)需要不可變且唯一的數(shù)據(jù)結(jié)構(gòu)時(shí)(如字典鍵或函數(shù)參數(shù)),set轉(zhuǎn)tuple是完美方案。它結(jié)合了set的唯一性和tuple的安全性:
unique_emails = {"a@example.com", "b@example.com", "a@example.com"}
email_tuple = tuple(unique_emails)
print("Original set:", unique_emails) # {'a@example.com', 'b@example.com'}
print("Tuple result:", email_tuple) # ('a@example.com', 'b@example.com') → 順序不定
print("Type check:", type(email_tuple)) # <class 'tuple'>
為什么優(yōu)于直接用set?
- 哈希支持:
tuple可作為字典鍵,而set不能(frozenset可以,但tuple更通用)。 - 序列操作:支持索引、切片等序列操作(
set不支持)。 - 跨平臺(tái)兼容:某些庫(如Pandas)對(duì)
tuple支持更好。
順序問題解決方案
如果需要固定順序,先排序再轉(zhuǎn)tuple:
sorted_tuple = tuple(sorted(unique_emails))
print(sorted_tuple) # ('a@example.com', 'b@example.com') → 確定順序
實(shí)戰(zhàn)場(chǎng)景:緩存鍵生成
創(chuàng)建基于唯一參數(shù)的緩存鍵:
def get_data(params: set):
# 將參數(shù)集轉(zhuǎn)為有序元組作為緩存鍵
cache_key = tuple(sorted(params))
# ... 用cache_key查詢緩存
return cache_key
print(get_data({"user_id", "token"})) # ('token', 'user_id') → 順序一致
容器轉(zhuǎn)換全景圖:mermaid可視化
為了清晰展示三大容器的轉(zhuǎn)換關(guān)系,我們用mermaid圖表直觀呈現(xiàn)所有路徑。注意箭頭方向表示轉(zhuǎn)換可行性,虛線表示可能丟失數(shù)據(jù)(如順序或唯一性):
渲染錯(cuò)誤: Mermaid 渲染失敗: Parse error on line 2: ... A[list] -->|tuple()| B[tuple] A - -----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PS'
圖表解讀:
- 實(shí)線箭頭:標(biāo)準(zhǔn)轉(zhuǎn)換路徑(語法簡(jiǎn)單)。
- 虛線箭頭:轉(zhuǎn)換可能丟失信息(如
set轉(zhuǎn)換時(shí)順序不可控)。 - 顏色標(biāo)記:
- ?? 藍(lán)色:可變?nèi)萜鳎?code>list)
- ?? 紅色:不可變?nèi)萜鳎?code>tuple)
- ?? 綠色:唯一性容器(
set)
關(guān)鍵結(jié)論:
list↔tuple轉(zhuǎn)換保留順序和重復(fù)項(xiàng),僅改變可變性。- 涉及
set的轉(zhuǎn)換必然丟失順序,且可能減少元素(去重)。 set→list/tuple是唯一能恢復(fù)索引訪問的路徑。
高級(jí)轉(zhuǎn)換技巧與陷阱規(guī)避
掌握基礎(chǔ)轉(zhuǎn)換后,讓我們挑戰(zhàn)更復(fù)雜的場(chǎng)景。這些技巧能幫你避免生產(chǎn)環(huán)境中的"詭異Bug"!
嵌套容器的深度轉(zhuǎn)換
當(dāng)容器包含子容器(如列表中的字典),淺層轉(zhuǎn)換會(huì)導(dǎo)致內(nèi)部結(jié)構(gòu)不一致:
# 問題:混合嵌套結(jié)構(gòu)
mixed_data = [1, (2, [3, 4]), {"a": [5, 6]}]
# 錯(cuò)誤:直接轉(zhuǎn)set會(huì)失?。ú豢晒#?
# set(mixed_data) → TypeError
# 正確方案:遞歸轉(zhuǎn)換函數(shù)
def deep_convert_to_set(obj):
if isinstance(obj, (list, tuple)):
return frozenset(deep_convert_to_set(item) for item in obj)
elif isinstance(obj, dict):
return frozenset((k, deep_convert_to_set(v)) for k, v in obj.items())
return obj
result = deep_convert_to_set(mixed_data)
print(result) # frozenset({1, frozenset({2, frozenset({3, 4})}), ...})
要點(diǎn):
- 使用
frozenset處理嵌套(因set不可哈希)。 - 遞歸處理字典、列表、元組。
性能優(yōu)化:避免不必要的轉(zhuǎn)換
轉(zhuǎn)換雖方便,但隱含性能成本。牢記這些原則:
避免循環(huán)內(nèi)轉(zhuǎn)換:
# 反模式:每次循環(huán)都轉(zhuǎn)set
for item in huge_list:
if item in set(huge_list): # 每次新建set!
...
# 正確:提前轉(zhuǎn)換
unique_set = set(huge_list)
for item in huge_list:
if item in unique_set: # O(1)檢查
大數(shù)據(jù)集慎用sorted(set(...)):set()去重 + sorted()排序 比 dict.fromkeys().keys()慢:
# 更快的有序去重(保留首次出現(xiàn)順序) ordered_unique = list(dict.fromkeys(huge_list))
錯(cuò)誤處理:優(yōu)雅應(yīng)對(duì)轉(zhuǎn)換失敗
轉(zhuǎn)換可能因數(shù)據(jù)問題失?。ㄈ绮豢晒?duì)象)。用try-except提升健壯性:
def safe_tuple_to_list(tup):
try:
return list(tup)
except TypeError as e:
print(f"轉(zhuǎn)換失敗: {e}")
# 嘗試修復(fù):遞歸轉(zhuǎn)換子元素
return [safe_tuple_to_list(item) if isinstance(item, tuple) else item
for item in tup]
# 測(cè)試含不可哈希對(duì)象的元組
problematic = (1, {"key": "value"})
print(safe_tuple_to_list(problematic)) # [1, {'key': 'value'}]
實(shí)際案例:日志分析流水線
整合多種轉(zhuǎn)換的完整工作流:
# 1. 從文件讀取日志(每行是tuple)
with open("logs.txt") as f:
log_tuples = [tuple(line.strip().split()) for line in f]
# 2. 提取唯一IP地址(tuple → set)
unique_ips = {ip for _, ip, _ in log_tuples}
# 3. 轉(zhuǎn)為排序列表生成報(bào)告(set → list)
report_ips = sorted(unique_ips, key=lambda ip: [int(x) for x in ip.split('.')])
# 4. 創(chuàng)建不可變配置(list → tuple)
config = tuple(report_ips[:5]) # 前5個(gè)高頻IP
print("Top IPs:", config)
總結(jié)與最佳實(shí)踐
容器轉(zhuǎn)換是Python基礎(chǔ)中的核心技能,但絕非簡(jiǎn)單的語法操作。通過本文的深度解析,你應(yīng)該已掌握:
- 6種轉(zhuǎn)換路徑的語法、特性和陷阱(? list→tuple, list→set, tuple→list, tuple→set, set→list, set→tuple)
- 性能關(guān)鍵點(diǎn):
set去重快200倍,成員檢查O(1) vs O(n) - 數(shù)據(jù)語義變化:轉(zhuǎn)換可能丟失順序、重復(fù)項(xiàng)或可變性
- 高級(jí)技巧:嵌套轉(zhuǎn)換、錯(cuò)誤處理、性能優(yōu)化
黃金法則 checklist
| 轉(zhuǎn)換場(chǎng)景 | 推薦操作 | 警惕陷阱 |
|---|---|---|
| 需要數(shù)據(jù)安全 | list → tuple | 嵌套容器未轉(zhuǎn)換 |
| 快速去重/成員檢查 | list/tuple → set | 順序丟失 |
| 需要索引/排序 | set → list | 未顯式排序 |
| 創(chuàng)建哈希鍵 | set → tuple (先排序) | 順序不一致導(dǎo)致鍵不同 |
| 處理嵌套結(jié)構(gòu) | 遞歸轉(zhuǎn)換 + frozenset | 淺拷貝導(dǎo)致引用問題 |
終極建議:
- 先問語義:轉(zhuǎn)換是為了去重?鎖定數(shù)據(jù)?還是恢復(fù)順序?
- 檢查元素:確保數(shù)據(jù)滿足目標(biāo)容器要求(如可哈希性)。
- 測(cè)試邊界:空容器、嵌套結(jié)構(gòu)、大數(shù)據(jù)集。
Python的優(yōu)雅在于用簡(jiǎn)單語法解決復(fù)雜問題。當(dāng)你熟練運(yùn)用容器轉(zhuǎn)換時(shí),代碼會(huì)變得更Pythonic——簡(jiǎn)潔、高效、易讀。正如Python之禪所言:“There should be one-- and preferably only one --obvious way to do it.”
現(xiàn)在,打開你的IDE,親手試試這些轉(zhuǎn)換吧!實(shí)踐是掌握Python精髓的唯一途徑。遇到問題?歡迎在評(píng)論區(qū)討論。Happy Coding!
以上就是Python中l(wèi)ist、tuple和set三大容器的相互轉(zhuǎn)換技巧的詳細(xì)內(nèi)容,更多關(guān)于Python list、tuple和set容器相互轉(zhuǎn)換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 監(jiān)聽salt job狀態(tài),并任務(wù)數(shù)據(jù)推送到redis中的方法
今天小編就為大家分享一篇python 監(jiān)聽salt job狀態(tài),并任務(wù)數(shù)據(jù)推送到redis中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python教程使用Chord包實(shí)現(xiàn)炫彩弦圖示例
在可視化中,有時(shí)候會(huì)使用到弦圖(Chord Diagram)來表示事物之間關(guān)系,本篇文章教大家如何使用Chord包實(shí)現(xiàn)炫彩弦圖,有需要的朋友可以借鑒參考下,希望大家多多進(jìn)步,早日升職加薪2021-09-09
Python全角與半角之間相互轉(zhuǎn)換的方法總結(jié)
全角與半角轉(zhuǎn)換在處理漢語語料中會(huì)經(jīng)常出現(xiàn),這里分別說明漢字、數(shù)字、字母的unicode編碼范圍,下面這篇文章主要給大家介紹了關(guān)于Python全角與半角之間相互轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2022-03-03
Windows下安裝python MySQLdb遇到的問題及解決方法
這篇文章主要介紹了Windows下安裝python MySQLdb遇到的問題及解決方法,需要的朋友可以參考下2017-03-03
Window 64位下python3.6.2環(huán)境搭建圖文教程
這篇文章主要為大家詳細(xì)介紹了Window 64位下python3.6.2環(huán)境搭建圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
python+django快速實(shí)現(xiàn)文件上傳
本篇文章主要介紹了django快速實(shí)現(xiàn)文件上傳,通過django web框架來實(shí)現(xiàn)一些簡(jiǎn)單的功能,有需要的可以了解一下。2016-10-10
如何使用Python腳本控制PyInstaller打包實(shí)戰(zhàn)詳解
這篇文章將為大家詳細(xì)介紹如何使用 Python 腳本控制 PyInstaller 打包過程,通過代碼注釋和功能擴(kuò)展,讓您輕松掌握專業(yè)級(jí)的應(yīng)用打包技巧2025-07-07
Python 實(shí)現(xiàn)兩個(gè)服務(wù)器之間文件的上傳方法
今天小編就為大家分享一篇Python 實(shí)現(xiàn)兩個(gè)服務(wù)器之間文件的上傳方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02

