11個Python迴圈技巧

华为云开发者联盟發表於2024-04-28

本文分享自華為雲社群《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特性,能夠使程式碼更加簡潔、清晰和優雅。在實際專案中,根據具體需求選擇合適的方法來建立多個列表將會成為程式設計中的重要技能,幫助提高程式碼的質量和效率。

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章