Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การดึงสมาชิกจาก Sublist จนถึง Index N ใน Python

โจทย์: ให้ลิสต์ของ Sublist ต้องการดึงสมาชิกตัวแรก (หรือ Index ใดๆ) จาก Sublist แรก ถึง N

Input/Output

random_list = [['Python', 'Java'], ['C', 'Pascal'], ['Javascript', 'PHP'], ['C#', 'C++'], ['React', 'Angular']]
N = 3
Output: ['Python', 'C', 'Javascript']  # สมาชิกตัวแรกของ 3 sublist แรก

วิธีที่ 1: ใช้ For Loop

random_list = [['Python', 'Java'], ['C', 'Pascal'], ['Javascript', 'PHP'], ['C#', 'C++'], ['React', 'Angular']]
N = 3

desired_elements = []
for i in range(N):
    desired_elements.append(random_list[i][0])

print(desired_elements)
['Python', 'C', 'Javascript']

วิธีที่ 2: ใช้ List Comprehension + Slicing (แนะนำ)

random_list = [['Python', 'Java'], ['C', 'Pascal'], ['Javascript', 'PHP'], ['C#', 'C++'], ['React', 'Angular']]
N = 3

desired_elements = [sublist[0] for sublist in random_list[:N]]
print(desired_elements)
['Python', 'C', 'Javascript']

วิธีที่ 3: ใช้ Built-in Functions (map, itemgetter, islice)

ใช้ Functional programming style

import operator
import itertools

random_list = [['Python', 'Java'], ['C', 'Pascal'], ['Javascript', 'PHP'], ['C#', 'C++'], ['React', 'Angular']]
N = 3

desired_elements = list(map(operator.itemgetter(0), itertools.islice(random_list, N)))
print(desired_elements)
['Python', 'C', 'Javascript']

สรุป: วิธีที่ 2 (List comprehension + slicing) อ่านง่ายที่สุดและเป็น Pythonic วิธีที่ 3 ใช้เมื่อต้องการ lazy evaluation หรือทำงานกับข้อมูลขนาดใหญ่