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'

1 つの引数のみがリストになり、 で表され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、引数が1つしかない場合でも、リストが表示されます。

もちろん、最初の引数をで区切ることもできますが、リストが必要def f(first, *rest)な場合は、要素を組み合わせるために特別なケーシングを行う必要があります。

于 2012-07-18T05:09:10.983 に答える
0

yield を使用することをお勧めします。

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 に答える