1

我目前使用的代码是:

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语句之外,还有什么替代方法?

4

4 回答 4

1

是的:

return lst[0] if len(lst) == 1 else lst
于 2012-07-18T05:08:52.637 回答
1

返回这样的不同类型可能会令人困惑。我建议使用

a = f(1)[0]

或者

[a] = f(1)

或者

a, = f(1)
于 2012-07-18T05:13:36.877 回答
0

如果我理解正确的话,不。如果您接受带有 的可变参数*args,那么即使只有一个参数,您也会得到一个列表。

你当然可以用 分隔第一个参数def f(first, *rest),但是当你想要一个列表时,你必须做特殊情况来组合元素

于 2012-07-18T05:09:10.983 回答
0

我建议使用产量:

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

是你想要的吗?

于 2012-07-18T05:29:24.623 回答