文字列のリストを取るメソッドがあります。残念ながら、リストの長さが 1 項目のみの場合、Python はこのリストを文字列として扱います。
この投稿には、何かが文字列であるかどうかを確認し、文字列である場合はリストに変換する方法があります: Python: 文字列のリストまたは文字列を取得する関数を定義する方法
しかし、これは、リストとして渡したアイテムを実際にリストにするための信じられないほど冗長な方法のようです。より良い方法はありますか?
文字列のリストを取るメソッドがあります。残念ながら、リストの長さが 1 項目のみの場合、Python はこのリストを文字列として扱います。
この投稿には、何かが文字列であるかどうかを確認し、文字列である場合はリストに変換する方法があります: Python: 文字列のリストまたは文字列を取得する関数を定義する方法
しかし、これは、リストとして渡したアイテムを実際にリストにするための信じられないほど冗長な方法のようです。より良い方法はありますか?
リストではなくタプルを使用していて、1 項目のタプル リテラルにコンマを追加するのを忘れている可能性があります。は単にあなたの言っていることと一致すると('foo')
解釈されます。'foo'
ただし、1 項目のタプル リテラルにコンマを追加すると、これが解決されます。('foo',)
戻ります('foo',)
。
Pythonはリストでそれを行うべきではありません。ただし、シングルトンタプルの構文はシングルトンリストとは異なります。
(1) == 1 # (1) is 1
[1] != 1 # [1] is a singleton list
(1,) != 1 # (1,) is a singleton tuple
私はあなたを信じているかどうかわかりません.pythonはそのように振る舞うべきではなく、次のようにも見えません:
>>> def foo(lst):
print type(lst)
>>> foo(['bar'])
<type 'list'>
その投稿は別のものに関するもので、単一の文字列または文字列のリストを渡し、両方のケースを文字列のリストであるかのように処理する機能が必要でした。リストのみを渡す場合は、常にリストとして扱っても問題ありません。
あなたは間違っています。Pythonは、単一の要素のリストに対してそのような変換を行いません。
[]
あなたが通過しているアイテムの周りにあなたが置いていることをダブル、トリプルチェックしてください。
それでも機能しない場合は、コードを表示してください。