从列表中提取min-length和max-length元素

时间:2017-06-27 13:53:26

标签: python

假设我有两个参数ab,我希望将较小和较大的(按长度分配,如果长度相同,我不关心哪一个)到各个变量。无论哪种情况如

  • a == b
  • len(a) == len(b)a != b

导致(据我所知)非直截了当的解决方案:

def compare(a, b):
    smallest = min([a, b], key=len)
    temp = [a, b]
    temp.remove(smallest) # Why does this return void?
    biggest = temp[0]

    do_something(smallest, biggest)

是否有更简单/更短的方式?

示例输入为foobarhellohello

>>>smallest, biggest = min(["foo", "bar"], key=len), max(["foo", "bar"], key=len)
('foo', 'foo') 

1 个答案:

答案 0 :(得分:3)

将两个值放在一个列表中,对其进行排序,然后将其解压缩为两个变量:

smallest, biggest = sorted([a, b], key=len)