本文分享自華爲雲社區《Python中的循環技巧指南》,作者:檸檬味擁抱。
當我們處理數據時,有時候需要創建多個列表以存儲不同類型或不同條件下的數據。在Python中,我們可以利用循環來快速、高效地創建這些列表。本文將介紹如何使用循環在Python中創建多個列表,並提供代碼實例。
python用循環新建多個列表
在Python中,我們可以使用列表推導式或循環結合條件語句來創建多個列表。下面是一些常見的場景和對應的代碼示例:
1. 創建固定數量的空列表
假設我們需要創建多個空列表,可以使用列表推導式和循環:
# 使用列表推導式創建多個空列表 num_lists = 5 empty_lists = [[] for _ in range(num_lists)] print(empty_lists)
這將創建一個包含5個空列表的列表。
2. 根據條件創建多個列表
有時候,我們需要根據特定條件創建不同的列表。例如,我們想將奇數和偶數分別存儲在兩個列表中:
# 創建奇數和偶數列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] odd_numbers = [] even_numbers = [] for num in numbers: if num % 2 == 0: even_numbers.append(num) else: odd_numbers.append(num) print("奇數列表:", odd_numbers) print("偶數列表:", even_numbers)
這將根據數字的奇偶性創建兩個列表。
3. 根據字符串長度創建多個列表
有時候,我們需要根據字符串的長度來將字符串分類並存儲在不同的列表中:
# 根據字符串長度創建多個列表 words = ["apple", "banana", "orange", "pear", "grape", "kiwi"] short_words = [] medium_words = [] long_words = [] for word in words: if len(word) < 5: short_words.append(word) elif len(word) < 7: medium_words.append(word) else: long_words.append(word) print("短單詞列表:", short_words) print("中等長度單詞列表:", medium_words) print("長單詞列表:", long_words)
這將根據字符串的長度將單詞分別存儲在三個不同的列表中。
4. 根據數據類型創建多個列表
有時候,我們需要根據數據的類型將其存儲在不同的列表中。例如,我們想將整數、浮點數和字符串分別存儲在不同的列表中:
# 根據數據類型創建多個列表 data = [1, 2.5, "apple", 4, "banana", 6.7, "orange", 8, 9, "pear"] integers = [] floats = [] strings = [] for item in data: if isinstance(item, int): integers.append(item) elif isinstance(item, float): floats.append(item) elif isinstance(item, str): strings.append(item) print("整數列表:", integers) print("浮點數列表:", floats) print("字符串列表:", strings)
這將根據數據的類型將其存儲在三個不同的列表中。
5. 根據條件動態創建多個列表
有時候,我們需要根據動態變化的條件來創建多個列表。例如,我們想根據用戶輸入的數量創建相應數量的列表:
# 根據用戶輸入動態創建多個列表 num_lists = int(input("請輸入要創建的列表數量: ")) lists = [[] for _ in range(num_lists)] print("已創建", num_lists, "個空列表:", lists)
這將根據用戶輸入的數量動態創建相應數量的空列表。
6. 創建包含特定範圍的數字的多個列表
有時候,我們需要根據特定範圍的數字來創建多個列表。例如,我們想要將0到9之間的數字按照個位數分別存儲在十個列表中:
# 創建包含特定範圍的數字的多個列表 num_lists = 10 range_lists = [[] for _ in range(num_lists)] for num in range(10): range_lists[num % num_lists].append(num) print("按照個位數存儲的列表:") for i, lst in enumerate(range_lists): print(f"列表{i}:", lst)
這將按照個位數將0到9之間的數字分別存儲在十個列表中。
7. 根據鍵的哈希值創建多個列表
有時候,我們想根據鍵的哈希值將數據分組存儲在多個列表中。例如,我們有一組鍵值對,我們想根據鍵的哈希值將其存儲在不同的列表中:
# 根據鍵的哈希值創建多個列表 data = {"apple": 3, "banana": 5, "orange": 2, "pear": 4, "grape": 6} num_lists = 3 hash_lists = [[] for _ in range(num_lists)] for key, value in data.items(): hash_index = hash(key) % num_lists hash_lists[hash_index].append((key, value)) print("根據鍵的哈希值存儲的列表:") for i, lst in enumerate(hash_lists): print(f"列表{i}:", lst)
這將根據鍵的哈希值將鍵值對存儲在三個不同的列表中。
8. 根據列表中元素的屬性創建多個列表
有時候,我們需要根據列表中元素的屬性值來創建多個列表。例如,假設我們有一組學生對象,我們想根據他們的成績將他們分別存儲在及格和不及格的兩個列表中:
# 根據學生對象的成績創建多個列表 class Student: def __init__(self, name, score): self.name = name self.score = score students = [ Student("Alice", 85), Student("Bob", 60), Student("Charlie", 75), Student("David", 40), Student("Emma", 95) ] passing_students = [] failing_students = [] for student in students: if student.score >= 60: passing_students.append(student) else: failing_students.append(student) print("及格學生列表:") for student in passing_students: print(f"{student.name}: {student.score}") print("\n不及格學生列表:") for student in failing_students: print(f"{student.name}: {student.score}")
這將根據學生對象的成績將學生分別存儲在及格和不及格的兩個列表中。
9. 根據索引範圍創建多個列表
有時候,我們需要根據索引範圍將列表切分成多個子列表。例如,我們有一個包含一組數字的列表,我們想將其分割成若干個小的子列表:
# 根據索引範圍創建多個列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] num_lists = 3 split_lists = [] for i in range(num_lists): start_index = i * len(numbers) // num_lists end_index = (i + 1) * len(numbers) // num_lists split_lists.append(numbers[start_index:end_index]) print("切分後的列表:") for i, lst in enumerate(split_lists): print(f"列表{i + 1}:", lst)
這將根據索引範圍將原始列表切分成三個子列表。
10. 根據列表元素的值進行分組創建多個列表
有時候,我們需要根據列表元素的值進行分組,並將它們存儲在不同的列表中。例如,假設我們有一組整數,我們想根據它們的奇偶性將它們分別存儲在兩個列表中:
# 根據列表元素的值進行分組創建多個列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] odd_numbers = [] even_numbers = [] for num in numbers: if num % 2 == 0: even_numbers.append(num) else: odd_numbers.append(num) print("奇數列表:", odd_numbers) print("偶數列表:", even_numbers)
這將根據列表元素的奇偶性將其分別存儲在奇數和偶數列表中。
11. 根據元素是否滿足條件創建多個列表
有時候,我們需要根據元素是否滿足特定條件來將它們存儲在不同的列表中。例如,假設我們有一組數字,我們想將大於等於5和小於5的數字分別存儲在兩個列表中:
# 根據元素是否滿足條件創建多個列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] greater_than_5 = [] less_than_5 = [] for num in numbers: if num >= 5: greater_than_5.append(num) else: less_than_5.append(num) print("大於等於5的數字列表:", greater_than_5) print("小於5的數字列表:", less_than_5)
這將根據數字是否大於等於5來將其存儲在兩個不同的列表中。
總結
總的來說,本文介紹了在Python中利用循環創建多個列表的多種方法,並通過具體的代碼示例進行了展示和解釋。從根據固定數量、條件、數據類型、屬性、索引範圍、哈希值等不同角度出發,我們探討了如何靈活地利用循環結合列表推導式或條件語句來創建多個列表。這些方法不僅提高了代碼的靈活性和可維護性,還能夠加速開發過程並提高程序的性能。
通過本文的學習,讀者可以掌握在Python中處理數據並組織成多個列表的技巧,從而更加有效地進行數據操作和管理。同時,靈活運用循環和列表推導式等Python特性,能夠使代碼更加簡潔、清晰和優雅。在實際項目中,根據具體需求選擇合適的方法來創建多個列表將會成爲編程中的重要技能,幫助提高代碼的質量和效率。