câu hỏi của tôi là làm thế nào để loại bỏ tất cả các chuỗi từ một danh sách, ví dụ nếu tôi có list=['hello',1,2,3,4,'goodbye','help']
và kết quả là list=[1,2,3,4]
Làm thế nào để loại bỏ tất cả các chuỗi từ một danh sách
Trả lời
Bạn cần phải sử dụng isinstance
để lọc ra những nhân tố này là chuỗi. Cũng đừng đặt tên biến của bạn list
nó sẽ bóng được xây dựng trong list
>>> from numbers import Real
>>> lst = ['hello', 1, 2, 3, 4, 'goodbye', 'help']
>>> [element for element in lst if isinstance(element, Real)]
[1, 2, 3, 4]
hoặc
>>> [element for element in lst if isinstance(element, int)]
[1, 2, 3, 4]
hoặc
>>> [element for element in lst if not isinstance(element, str)]
[1, 2, 3, 4]
Hoặc sử dụng danh sách hiểu như @ user3100115 hoặc sử dụng "lisp/cách tiếp cận lambda "
>> l = [1, 2, 'a', 'b']
>> list(filter(lambda a: isinstance(a, int), l))
[1, 2]
Nhân tiện, đừng đặt tên biến là list
. Nó đã là một hàm python. :)
Bạn có thể làm điều đó bằng isinstance
, nhưng không giống như những câu trả lời khác bằng user3100115 tôi sẽ loại danh sách đen mà bạn không muốn thay vì danh sách trắng chỉ có một vài loại. Bạn không chắc chắn cái nào phù hợp hơn với trường hợp đặc biệt của bạn, chỉ cần thêm nó vào thay thế. Nó cũng hoạt động mà không cần nhập khẩu.
lst = ['hello', 1, 2, 3, 4, 'goodbye', 'help']
filtered = [element for element in lst if not isinstance(element, str)]
print(filtered)
# [1, 2, 3, 4]
Thay vì một sự hiểu biết danh sách, bạn cũng có thể sử dụng filter
dựng sẵn. Điều đó trả về một máy phát điện, vì vậy để in trực tiếp nó, bạn phải chuyển đổi nó thành một danh sách đầu tiên. Nhưng nếu bạn sẽ lặp lại nó (ví dụ: sử dụng một for
-vòng), không chuyển đổi nó và nó sẽ nhanh hơn và tiêu thụ ít bộ nhớ hơn do "đánh giá lười biếng". Bạn có thể đạt được điều tương tự với ví dụ trên nếu bạn thay thế các dấu ngoặc vuông bằng dấu ngoặc tròn.
lst = ['hello', 1, 2, 3, 4, 'goodbye', 'help']
filtered = list(filter(lambda element: not isinstance(element, str), lst))
print(filtered)
# [1, 2, 3, 4]
- 1. Làm thế nào để loại bỏ tất cả các chuỗi thoát khỏi danh sách các chuỗi?
- 2. Làm thế nào để loại bỏ tất cả các giá trị số nguyên từ một danh sách trong python
- 3. Làm thế nào để loại bỏ danh sách các từ từ chuỗi
- 4. điển Loại bỏ tất cả các phần mở rộng của một chuỗi trong danh sách
- 5. Làm thế nào để loại bỏ tất cả các khoảng trắng từ đầu hoặc cuối chuỗi?
- 6. Làm thế nào để loại bỏ tất cả các số không bắt đầu từ chuỗi?
- 7. Làm thế nào để loại bỏ tất cả các ký tự khoảng trắng từ một String?
- 8. Làm thế nào để loại bỏ tất cả các dấu câu trong một chuỗi? (Python)
- 9. Làm thế nào để Hủy bỏ tất cả các tùy chọn từ một danh sách lí sử dụng Jquery/JS
- 10. Làm thế nào để loại bỏ chuỗi rỗng trong một danh sách?
- 11. Làm thế nào để loại bỏ tất cả các dấu phụ từ một tập tin?
- 12. Làm thế nào để loại bỏ tất cả các thành phần từ một JFrame trong Java?
- 13. Python, loại bỏ tất cả các lần xuất hiện của chuỗi trong danh sách
- 14. Thay thế tất cả các từ trong danh sách từ bằng một chuỗi khác trong python
- 15. Làm thế nào để loại bỏ tất cả eventhandler
- 16. Làm thế nào để loại bỏ giá trị trùng lặp từ một danh sách trong groovy
- 17. Làm thế nào để bạn loại bỏ tất cả các ký tự chữ cái từ một chuỗi?
- 18. Làm thế nào để sử dụng git sạch loại bỏ tất cả các danh sách tập tin trong .gitignore?
- 19. Loại bỏ một danh sách từ
- 20. Làm thế nào để loại bỏ 0 từ một chuỗi
- 21. Làm thế nào để loại bỏ đầu và đuôi không gian từ chuỗi trong một danh sách Python
- 22. Làm thế nào để loại bỏ tất cả các mối quan hệ từ manytomany?
- 23. Làm thế nào để loại bỏ tất cả các lớp thử nghiệm từ Pharo?
- 24. Làm thế nào để loại bỏ listview tất cả các mục
- 25. Xóa tất cả các mục từ một danh sách
- 26. Làm thế nào để loại bỏ tất cả NA từ một Vector?
- 27. Làm thế nào để loại bỏ tất cả các kiểu thừa kế và tính toán từ một phần tử?
- 28. thế nào đúng cách loại bỏ mục từ danh sách
- 29. Làm thế nào để loại bỏ tất cả các thành phần trẻ em của một container?
- 30. Xóa tất cả các lần xuất hiện của chuỗi trong một chuỗi từ danh sách python
Nếu bạn cần 'lambda' để sử dụng' bộ lọc', thì listcomp hoặc genexpr sẽ luôn nhanh hơn và ngắn gọn hơn (giả sử tên viết tắt của biến được lặp lại). Vui lòng không sử dụng 'map' /' filter' nếu bạn cần 'lambda' để làm cho chúng hoạt động. – ShadowRanger
Tôi đã thêm phương pháp "lisp" này cho đầy đủ vì lúc đó chỉ có một câu trả lời về việc hiểu danh sách. Tôi không biết nó chậm hơn. Cảm ơn! –