あなたのソリューションは完璧です。
the Zen of Pythonで述べたように、と「読みやすカウント」、そうではなく、「最も少ない行」または「最少の変数の任意と無意味な目標を達成しようとすることに焦点を当て、「シンプルで複雑よりも優れています」中古"。それらのどちらも全く問題はありません。
確かに、これを何とか1行に入れることができます。チャンスは非常にギミック的になり、あなたが今日それを理解するかもしれない間、そして明日でも、来月、それはあなたに苦労するでしょう。
また、これを行う一般的な方法は、リスト内包表記を悪用することです。リスト内包表記は、を作成して、あなたが物事を収集するリストを作成するために使用されます。副作用のためにそれらを使用することは、より多くの行を単一行に入れるために無意味なリストを作成するので、避けるべき共通の反パターンです(もう一度読みやすさを傷つける)。
解決策は良いです。あなたの前提で、私はそれがこれら二つの別々のリストにそれらの2つの値を置くために完璧なソリューションだと言うだろう:
name, pos = myfunc()
name_list.append(name)
pos_list.append(pos)
あなたは簡単に何が起こっているか理解することができます。さらに、一時変数には便利な名前があり、その関数からの複数の戻り値が何であるかを簡単に理解できます。
このリスト形式の要件がない場合は、どのような代替方法がありますか?さて、あなたのユースケースには大きく依存しますが、関数が返す同じタプルと同じリスト内の結果を収集することもできます。たぶんあなたの関数から名前付きタプルを返すので、値が何であるかというセマンティックな情報を得ることができます。または名前を位置にマッピングするだけの場合は、カスタムオブジェクトを返すか、辞書に格納してください。
複数のものを同時に返す関数は、通常、それ自体では簡単には理解できません。だから、呼び出しコードが結果を扱うために少し表現力豊かになったらうまくいきます。そうすれば、1年後でさえ理解しやすくなります。
これらのリストを別々にしたい場合は、それらの値を追加するのが最良の選択です。 – poke
「より良い方法」は、現在の方法が良い選択ではないと推定します。 – davidism