我目前使用的代码是:
def f(*args):
lst=[str(i) for i in args]
if len(lst)==1:lst = lst[0]
return lst
我想要的是:
a=f(1) #'1', not [1]
a,b = f(1,2) #'1', '2'
只有一个参数是一个列表,它由 表示a
。
除了使用if
语句之外,还有什么替代方法?
我目前使用的代码是:
def f(*args):
lst=[str(i) for i in args]
if len(lst)==1:lst = lst[0]
return lst
我想要的是:
a=f(1) #'1', not [1]
a,b = f(1,2) #'1', '2'
只有一个参数是一个列表,它由 表示a
。
除了使用if
语句之外,还有什么替代方法?
是的:
return lst[0] if len(lst) == 1 else lst
返回这样的不同类型可能会令人困惑。我建议使用
a = f(1)[0]
或者
[a] = f(1)
或者
a, = f(1)
如果我理解正确的话,不。如果您接受带有 的可变参数*args
,那么即使只有一个参数,您也会得到一个列表。
你当然可以用 分隔第一个参数def f(first, *rest)
,但是当你想要一个列表时,你必须做特殊情况来组合元素。
我建议使用产量:
def f(*args):
for i in args:
yield str(i)
a, = f(1)
print a
a, b = f(1, 2)
print a, b
返回:
1
1 2
是你想要的吗?