私が現在使用しているコードは次のとおりです。
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
ステートメントを使用する以外に、どのような選択肢がありますか?
私が現在使用しているコードは次のとおりです。
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
ステートメントを使用する以外に、どのような選択肢がありますか?
はい:
return lst[0] if len(lst) == 1 else lst
このように異なる型を返すと混乱する可能性があります。使用することをお勧めします
a = f(1)[0]
また
[a] = f(1)
また
a, = f(1)
私があなたを正しく理解していれば、違います。で可変引数を受け入れると*args
、引数が1つしかない場合でも、リストが表示されます。
もちろん、最初の引数をで区切ることもできますが、リストが必要def f(first, *rest)
な場合は、要素を組み合わせるために特別なケーシングを行う必要があります。
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
それはあなたが望むものですか?