Tôi muốn áp dụng hàm (len
) trên mỗi phần tử trong một vectơ. Trong R, tôi có thể dễ dàng thực hiện việc này với sapply(cities,char)
. Có một sự thay thế như thế này trong Python KHÔNG CÓ viết một vòng lặp?Python so với R: áp dụng một hàm cho mỗi phần tử trong một vector
Trả lời
Cú pháp là map(function, list)
.
Ví dụ:
map(len, [ [ 1,2,3], [4,5,6] ])
Output:
[ 3, 3 ]
Bạn có thể sử dụng bản đồ chức năng tiếp nhận một chức năng để áp dụng cho một iterable. Tài liệu để lập bản đồ bản đồ: here
Ví dụ, bạn lon vượt qua một (lambda sử dụng) chức năng Anonymus để áp dụng cho mỗi phần tử vào danh sách bằng cách này:
>>> map(lambda x: x[1]*2 + 3, [[1,2,3], [1,4]])
[7, 11]
R sapply()
có thể được thay thế bằng một danh sách hiểu, nhưng công bằng, đủ hiểu danh sách không tránh được việc viết của vòng lặp .
Ngoài map()
bạn nên có một cái nhìn tại Pandas, cung cấp giải pháp thay thế Python cho một số các chức năng mà người sử dụng trong R.
import pandas as pd
vector = [1,2,3,4,5]
square_vector = pd.Series(vector).apply(lambda x: x**2)
print square_vector.tolist()
Kết quả mã trên trong một danh sách mới với các giá trị vuông của imput:
[1, 4, 9, 16, 25]
Ở đây, tôi đã thông qua vector để một loạt nhà xây dựng pd.Series(vector)
và áp dụng một chức năng Anonymus apply(lambda x: x**2)
. Đầu ra là một chuỗi gấu trúc có thể được chuyển đổi trở lại danh sách nếu muốn tolist()
. Loạt Pandas có rất nhiều chức năng và lý tưởng cho nhiều thao tác xử lý dữ liệu và phân tích.
- 1. R: Áp dụng hàm cho ma trận với các phần tử của vector làm đối số
- 2. Python: Đối với mỗi phần tử danh sách áp dụng một hàm trên danh sách
- 3. tìm các phần tử phổ biến trong một số vectơ với R và áp dụng hàm
- 4. Kết hợp mỗi phần tử của một véc tơ với vector khác trong R
- 5. Làm thế nào để áp dụng một hàm cho mỗi phần tử của một cột mảng trong Postgres?
- 6. Chuyển đổi một vector R vào một danh sách, mỗi phần tử trong vector như một phần tử trong danh sách
- 7. Làm thế nào để áp dụng một phần hiệu quả một hàm trong R?
- 8. C++ cho mỗi phần, kéo từ các phần tử vector
- 9. Pig: áp dụng một nhà điều hành foreach để mỗi phần tử trong một túi
- 10. Làm thế nào để dán một chuỗi trên mỗi phần tử của một vector của chuỗi bằng cách áp dụng trong R?
- 11. Làm thế nào để áp dụng hàm trên mỗi chỉ số của phần tử ma trận
- 12. Rust có cách nào để áp dụng một hàm/phương thức cho từng phần tử trong một mảng hoặc véc-tơ không?
- 13. Gọi hàm khởi tạo mặc định cho mỗi phần tử trong std được xây dựng :: vector
- 14. R - Lọc một vector sử dụng một hàm
- 15. Cách áp dụng hàm cho tất cả các phần tử trong mảng (trong lớp mẫu C++)
- 16. Tên "phần" đến từ đâu cho một toán tử infix được áp dụng một phần?
- 17. Mã cho phần tử thứ hai thành phần tử cuối cùng trong một vector
- 18. Tạo một vector từ các phần tử danh sách trong R
- 19. Có thể áp dụng một hàm chung cho các phần tử tuple không?
- 20. Trong D, làm cách nào để áp dụng một hàm cho tất cả các phần tử trong một mảng?
- 21. Làm thế nào để áp dụng một hàm cho một tập hợp các cột trong r?
- 22. nhân tất cả các phần tử của một vector trong R
- 23. tìm chỉ số của một phần tử trong vector
- 24. Gọi hàm trên mọi phần tử của vector C++
- 25. R Có thể định vị, áp dụng một hàm cho một tập hợp con cột
- 26. javascript áp dụng một chức năng để mỗi phần tử trên mảng các đối tượng
- 27. Cách áp dụng một hàm cho một biến thể?
- 28. thêm giá trị cho mỗi phần tử trong mảng python
- 29. clojure - xóa một phần tử khỏi một vector ref
- 30. Xóa các phần tử khỏi một vector
https://docs.python.org/3/library/functions.html#map – jakevdp
Điều gì về việc hiểu danh sách? '[len (el) cho el trong vectơ]'. Nó nhiều hơn Pythonic hơn là 'map'. –
Nhưng 'sapply' là một vòng lặp! – Parfait