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

Python - Chuyển đổi cột thành các phần tử riêng biệt trong danh sách danh sách

Trong phân tích dữ liệu hoặc xử lý dữ liệu bằng python, chúng tôi gặp phải các tình huống trong đó danh sách đã cho phải được sửa sang lại hoặc định hình lại để có được danh sách với các cột khác nhau. Chúng ta có thể đạt được điều đó bằng nhiều cách tiếp cận như được thảo luận bên dưới.

Sử dụng Slicing

Chúng ta có thể cắt danh sách tại các phần tử nhất định để tạo cấu trúc cột. Ở đây chúng tôi chuyển đổi danh sách đã cho thành một danh sách mới, trong đó các phần tử được tách ra ở giữa. Chúng tôi kiện hai vì vòng lặp. Phần tử bên ngoài tách các phần tử từ phần tử thứ 0 đến phần tử thứ hai và phần tử bên trong từ phần tử thứ hai đến phần tử cuối cùng.

Ví dụ

x = [[5,10,15,20],[25,30,35,40],[45,50,55,60]]
#Using list slicing and list comprehension
print ("The Given input is : \n" + str(x))
result = [m for y in [[n[2: ], [n[0:2]]] for n in x] for m in y]
print ("Converting column to separate elements in list of lists : \n" + str(result))

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

The Given input is :
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]]
Converting column to separate elements in list of lists :
[[15, 20], [[5, 10]], [35, 40], [[25, 30]], [55, 60], [[45, 50]]]

itertools.chain () và khả năng hiểu danh sách

Thay vì hai vòng lặp for, chúng ta cũng có thể sử dụng phương thức chuỗi từ itertools. Sử dụng tính năng hiểu danh sách, chúng tôi áp dụng logic tương tự như trên và nhận được kết quả với các cột được chia ở giữa danh sách nhất định.

Ví dụ

from itertools import chain
x = [[5,10,15,20],[25,30,35,40],[45,50,55,60]]
#Using list slicing and list comprehension
print ("The Given input is : \n" + str(x))
res = list(chain(*[list((n[2: ], [n[0:2]]))
   for n in x]))
print ("Converting column to separate elements in list of lists : \n" + str(res))

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

The Given input is :
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]]
Converting column to separate elements in list of lists :
[[15, 20], [[5, 10]], [35, 40], [[25, 30]], [55, 60], [[45, 50]]]