我有一个清单,例如
l = ['abc34','def987','ghij','klmno','pqrstuvwxyz1234567','98765','43','210abc']
如何在最长元素出现之前获取列表中的所有元素而不是之后出现的元素?
答案 0 :(得分:9)
这是一种方式:
l = ['abc34','def987','ghij','klmno','pqrstuvwxyz1234567','98765','43','210abc']
new_list = l[:l.index(max(l, key=len))]
答案 1 :(得分:3)
这有效:
lst = ['abc34','def987','ghij','klmno','pqrstuvwxyz1234567','98765','43','210abc']
idx, maxLenStr = max(enumerate(lst), key=lambda x:len(x[1]))
sublist = lst[:idx]
它只遍历列表一次以确定最大长度,而使用max()
然后index()
在所有元素上迭代两次 。它还存储了maxLenStr
中最大长度的字符串以及idx
中找到的字符串,以防万一。