2016-10-07 8 views
0

リストを初期化せずに1行に追加するにはどうすればよいですか?たとえば、リストを初期化して1行に追加する

function example(a=None): 
    a = a or [] 
    a.append(1) 
    return another_function(a) 

関数内の2つのステートメントを結合するにはどうすればよいですか?私はこのような何かを探していますが、それは動作しません

function example(a): 
    a = (a or []).append(1) 
    return another_function(a) 

編集:私は他の場所でaを参照しない、それだけで関数から関数に渡されています。実際には値だけが重要なので、正しい値を持つ別のオブジェクトであれば問題ありません。また、デフォルト値Noneを追加しました。

+3

なぜ2行だけではないのですか? – user2357112

+3

どのように初期化されませんか?代わりにそれ以外の価値はありますか? –

+0

このパラメータaは、そのような関数の間で渡され、いずれか1つが初期化される可能性があります。 – mehmet

答えて

3
def example(a): 
    return a + [1] if a else [1] 

>>> example([1,2,3]) 
[1, 2, 3, 1] 
>>> example([]) 
[1] 
+5

これはリストに正確には適用されません。私は最後の項目が追加された新しいリストを作成します。場合によっては若干の違いがあります... – mgilson

+2

OPは、同じリストオブジェクトを別の関数で初期化することができ、参照が保持されるべきであることを暗示しています。私はこれが答えだとは思わない – slezica

+0

@slezica私は「パラメータaはそのような関数とそれのいずれかが初期化される可能性があります。私は「同じ目的」とは言いませんでした。それが初期化されるまで私は気にしません。 – mehmet

関連する問題