Tuesday, September 20, 2011

[Python] Ma trận chuyển vị và cách lấy cột của 1 ma trận

Giải PE82, nghịch Python lại tìm ra trò mới.â
Cần lấy 1 cột trong 2D list để cho vào 1 list khác.

Cách làm là dùng hàm zip() để trả về ma trận chuyển vị rồi lấy dòng (tương ứng với cột ) cần lấy. (hoặc đơn giản hơn là tạo 1 list mới chứa các phần tử của cột cần lấy)

>>> ls = [[1,2,3],[4,5,6],[7,8,9]]
>>> for i in ls: print i
...
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
>>> print ls[2][:]
[7, 8, 9]
>>> for row in zip(*ls): print row
...
(1, 4, 7)
(2, 5, 8)
(3, 6, 9)
>>> print zip(*ls)[2]
(3, 6, 9)
>>> print zip(*ls)[1]
(2, 5, 8)
>>> [row[1] for row in ls]
[2, 5, 8]
Python cung cấp nhiều thư viện giành riêng cho mục đích tính tóan và khoa học vd như scipy, pynum... Nhưng khi không cần nhiều như thế thì cứ zip mà xoay :x
Love Python ! :x Solved PE82
(Mình ham chơi quá :“> )

No comments: