Computer >> Máy Tính >  >> Lập trình >> Python

Các phần tử Nhóm Python tại cùng một chỉ mục trong một danh sách nhiều

Trong hướng dẫn này, chúng ta sẽ viết một chương trình kết hợp các phần tử của cùng một chỉ số các danh sách khác nhau thành một danh sách duy nhất. Và có một hạn chế ở đây. Tất cả các danh sách phải có cùng độ dài. Hãy xem một ví dụ để hiểu rõ hơn.

Đầu vào

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Đầu ra

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Chúng ta có thể giải quyết nó theo nhiều cách khác nhau. Hãy xem cách giải quyết bằng các vòng lặp thông thường.

  • Khởi tạo danh sách bằng các danh sách.
  • Khởi tạo một danh sách trống.
  • Khởi tạo một chỉ mục biến đến 0.
  • Lặp lại thời gian dài của danh sách phụ
    • Nối một danh sách trống vào danh sách trước đó
    • Lặp lại thời gian độ dài danh sách.
      • Nối ** danh sách [current_index] [index] ** vào ** kết quả [index]
  • In kết quả.

Ví dụ

# initializing the list
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# empty list
result = []
# variable to 0
index = 0
# iterating over the sub_list length (3) times
for i in range(len(lists[0])):
   # appending an empty sub_list
   result.append([])
   # iterating lists length (3) times
   for j in range(len(lists)):
      # adding the element to the result
      result[index].append(lists[j][index])
# moving to the next index
index += 1
# printing the result
print(result)

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Chúng tôi có thể giải quyết vấn đề này bằng cách sử dụng zip hoạt động mà không cần nỗ lực. zip hàm cung cấp cho bạn tất cả các phần tử chỉ mục trong một bộ như chúng ta muốn. Hãy xem mã.

Ví dụ

# initializing the list
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# using the zip and printing it
print(list(zip(*lists)))

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

Chúng ta có thể chuyển đổi các bộ giá trị thành danh sách bằng cách lặp qua các danh sách. Nó có thể được thực hiện theo cách khác. Sẽ sử dụng một chức năng khác được gọi là bản đồ để chuyển đổi tất cả các bộ giá trị thành danh sách. Đó là một mã dòng.

Ví dụ

# initializing the list
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# using the zip and printing it
print(list(map(list, zip(*lists))))

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Chúng tôi đã sử dụng bản đồ để lặp qua danh sách và chuyển đổi từng bộ vào danh sách. Bạn có thể làm tương tự với các vòng lặp. Hãy thử nó.

Kết luận

Nếu bạn có bất kỳ nghi ngờ nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.