Trong Python, tôi có một danh sách các chuỗi, một số có thể là chuỗi rỗng. Cách tốt nhất để lấy chuỗi không trống đầu tiên là gì?Nhận chuỗi không trống đầu tiên từ danh sách trong python
Trả lời
next(s for s in list_of_string if s)
Edit: py3k phiên bản giấy tờ chứng minh như tư vấn bởi Stephan202 trong ý kiến, cảm ơn.
'[]' được gọi là danh sách hiểu. – SilentGhost
sẽ không hoạt động trong phiên bản py3k – SilentGhost
py3k: 'next (s cho s trong list_of_string nếu s)'. – Stephan202
Để loại bỏ tất cả các chuỗi rỗng,
[s for s in list_of_strings if s]
Để có được chuỗi không rỗng đầu tiên, chỉ cần tạo danh sách này và nhận được phần tử đầu tiên, hoặc sử dụng các phương pháp lười biếng theo đề nghị của wuub.
def get_nonempty(list_of_strings):
for s in list_of_strings:
if s:
return s
Ít sang trọng hơn so với máy phát hiểu được đề xuất ở trên, cũng cho biết thêm sự phức tạp hơn đối với tệp soruce. –
sang trọng trong con mắt của kẻ đối xử, Daniel. Nó hoạt động hoàn hảo không giống như phiên bản của câu trả lời được chấp nhận: đó là điều quan trọng – SilentGhost
để nhận chuỗi đầu tiên không trống trong danh sách, bạn chỉ cần lặp lại chuỗi đó và kiểm tra xem nó có trống không. Thats tất cả để có nó.
arr = ['','',2,"one"]
for i in arr:
if i:
print i
break
Đây là một cách ngắn gọn:
filter(None, list_of_strings)[0]
EDIT:
Dưới đây là một hơi dài như vậy là tốt hơn:
from itertools import ifilter
ifilter(None, list_of_strings).next()
Tại sao cách thứ hai tốt hơn? –
Điều này chỉ hoạt động trong Python 2.x và kém hiệu quả hơn ví dụ về trình tạo, vì 'bộ lọc' lặp lại toàn bộ danh sách, bất kể nội dung. Trong py3k 'filter' trả về một đối tượng lọc, không thể mô tả được. – Stephan202
@Fred: Cách đầu tiên sẽ đi qua và lọc ra mọi chuỗi trống, tạo danh sách mới và chọn kết quả đầu tiên. Cách thứ hai sẽ đi qua danh sách lọc ra các chuỗi rỗng cho đến khi tìm thấy chuỗi trống đầu tiên và sẽ trả lại. Không có danh sách trung gian nào được tạo. Ví dụ: nếu bạn có danh sách 10.000 chuỗi và chỉ có chuỗi đầu tiên trống, phương pháp đầu tiên sẽ tạo danh sách mới 9999 chuỗi trong bộ nhớ trong khi chuỗi thứ hai không có. –
Dựa trên câu hỏi của bạn tôi sẽ phải giả sử rất nhiều, nhưng để "lấy" chuỗi không trống đầu tiên:
(i for i, s in enumerate(x) if s).next()
trả về chỉ mục của nó trong danh sách. Các 'x' ràng buộc chỉ vào danh sách các chuỗi của bạn.
- 1. Python: Lấy ký tự đầu tiên của chuỗi đầu tiên trong danh sách?
- 2. Python - Tìm chỉ mục của mục không trống đầu tiên trong danh sách
- 3. Xóa từ đầu tiên trong chuỗi Python?
- 4. Lấy x mục đầu tiên từ một danh sách
- 5. Nhận từ đầu tiên của chuỗi
- 6. Nhận 250 từ đầu tiên của chuỗi?
- 7. Tạo danh sách trống trong Python
- 8. Python: Cách xóa danh sách trống khỏi danh sách?
- 9. Chỉ mục danh sách Python đầu tiên lớn hơn x?
- 10. Đúc từ danh sách danh sách chuỗi để liệt kê danh sách int trong python
- 11. python: tạo danh sách từ chuỗi
- 12. Thay thế chuỗi đầu tiên trong Python
- 13. Python: Tìm nạp 10 kết quả đầu tiên từ danh sách
- 14. Bỏ qua phần tử đầu tiên trong danh sách
- 15. Tạo từ điển từ danh sách python
- 16. Python: Kiểm tra xem tất cả các từ điển trong danh sách có trống không
- 17. Nhận các mục duy nhất từ danh sách danh sách?
- 18. Cách khác để tìm hai giá trị lớn nhất đầu tiên trong danh sách trong python
- 19. nhận các mục nhập đầu tiên trong các hàng trong danh sách?
- 20. Nhận danh sách phụ từ một danh sách trong Freemarker
- 21. Chuỗi concat Python có danh sách
- 22. EKEventStore nhận sự kiện trả về danh sách trống
- 23. Nhận hàng đầu tiên của chuỗi tài nguyên mysql?
- 24. Làm phẳng danh sách các chuỗi và danh sách các chuỗi và danh sách bằng Python
- 25. Lấy Danh sách Đầu tiên & Cuối cùng trong Danh sách Sharepoint
- 26. Chuyển chuỗi chuỗi thành danh sách nổi trong python
- 27. Chọn danh sách đầu tiên trong bảng - CSS con đầu tiên?
- 28. hàng trống đầu tiên trong excel
- 29. Thêm mục nhập vào danh sách và xóa mục nhập đầu tiên trong Python
- 30. Danh sách trống có bằng Không hoặc không?
Bạn có muốn tham chiếu đến chuỗi trống đầu tiên hoặc bạn có muốn xóa tất cả các chuỗi trống khỏi danh sách không? Danh sách này có được tạo ra từ một chuỗi phân tách bởi bất kỳ cơ hội nào không? –
Được tạo từ regex: matches = re.findall (r "foo (\ d +) | thanh (\ d +)") - Tôi muốn chuỗi không trống đầu tiên, nhưng sẽ quan tâm đến cách xóa tất cả các chuỗi rỗng (regex có thể lâu hơn). –
tiêu đề câu hỏi của bạn không tương ứng với nội dung câu hỏi của bạn. Sửa một trong số chúng. – SilentGhost