2012-09-21 62 views
11

Một cái gì đó như max(len(s1), len(s2)) sẽ chỉ trả về độ dài tối đa. Nhưng nếu tôi thực sự muốn tìm ra chuỗi nào dài hơn, và có thể lưu nó vào một chuỗi khác, làm thế nào là xong? max(s1,s2) dường như trả lại chuỗi có giá trị lớn hơn, nhưng không nhất thiết phải dài nhất.Làm cách nào để tìm chuỗi dài nhất trong Python?

Lưu ý: điều này phải được thực hiện mà không có danh sách hoặc mảng.

Trả lời

38

max mất một hàm key gây max để lấy max key(val) cho mỗi val, nhưng vẫn trả lại val, để wit:

>>> max("foobar", "angstalot") 
'foobar' 
>>> max("foobar", "angstalot", key=len) 
'angstalot' 
0
def longest(a, b): 
    if len(a) > len(b): 
     return a 
    return b 
+0

Tại sao bạn lại bỏ phiếu? Điều này không trả lời câu hỏi? – Joe

+1

Nó hoạt động, nhưng nó không phải là thành ngữ bởi vì chính xác chức năng đó, trong một hình thức tổng quát hơn và hữu ích, đã tồn tại trong số các nội trang. – delnan

+1

Có lẽ bạn nên chỉnh sửa câu hỏi để nói "cách thực sự để làm điều này là gì?". – Joe

1

Chỉ cần một biểu thức điều kiện đơn giản dựa vào độ dài của mỗi chuỗi là tất cả những gì cần thiết:

longest = s1 if len(s1) > len(s2) else s2 
Các vấn đề liên quan