我正在学习python,想知道是否有 pythonic 的方式。我当然可以做
if len(a) > len(b) :
(x,y) = (b,a)
,依此类推。但这似乎有些冗长。在python中有更美丽的方法吗?
答案 0 :(得分:6)
排序似乎有点矫kill过正。您只需使用if
就可以做到这一点。
x,y = (a,b) if len(a) < len(b) else (b,a)
答案 1 :(得分:2)
x = min(a, b, key=len)
y = max(a, b, key=len)
重复,但意图很明确。
由于a
和b
接受了可变数量的参数,因此删除了括号,使元组从min
和max
中消失。
答案 2 :(得分:1)
找到一种方法。
(x,y) = sorted([a,b], key = len)
答案 3 :(得分:1)
使用 min(n1,n2,n3,...)
>>> n1 = "abcdefghijkl"
>>> n2 = "abc"
>>> min((n1,n2), key=len)
'abc'
>>> max((n1,n2), key=len)
'abcdefghijkl'
答案 4 :(得分:1)
这个问题似乎真的是基于观点的,因此,我认为我们应该参考Zen of Python来定义 beautiful ,尤其是:
扁平比嵌套好。
稀疏胜于致密。
可读性很重要。
基于这些原因,我认为您的方法:
if len(a) > len(b) :
(x,y) = (b,a)
else:
(x,y) = (a,b)
是最好的。
答案 5 :(得分:0)
只是一个如何使用 dict 的演示
解决方案 1:
a = [3]
b = [2,3 ]
_bool = len(a)<len(b)
d = { True : a, False : b}
x = d[_bool]
y = d[not _bool]
print(x, y)
使用列表:
解决方案 2:
x, y = [[a, b], [b, a]][len(a) > len(b)]
虽然我的首选方法是
x, y = sorted([a, b], key=len)