Pythonで文字列として異なるタイプのアイテムのリストに参加する


292

アイテムのリストに参加する必要があります。リストの項目の多くは、関数から返される整数値です。つまり、

myList.append(munfunc()) 

リストに結合するために、返された結果を文字列に変換するにはどうすればよいですか?

すべての整数値に対して以下を実行する必要がありますか?

myList.append(str(myfunc()))

キャストの問題を解決するよりPython的な方法はありますか?


3
投稿する前に、他の人があなたの質問の内容を理解したり、質問を読み直したりできるように、適切な文法を使用してください。
allyourcode 2010

回答:


535

呼び出しstr(...)は、何かを文字列に変換するPythonの方法です。

文字列のリストが必要な理由を検討する必要があるかもしれません。代わりに、整数のリストとして保持し、表示する必要がある場合にのみ整数を文字列に変換できます。たとえば、整数のリストがある場合、forループで整数を1つずつ変換して、,次のように結合できます。

print(','.join(str(x) for x in list_of_ints))

175

strに整数を渡すことに問題はありません。これを行わない理由の1つは、myListが実際には整数のリストであると想定されているためです。たとえば、リスト内の値を合計するのが妥当です。その場合、myListに追加する前に、intをstrに渡さないでください。追加する前に文字列に変換しない場合は、次のようなことで1つの大きな文字列を作成できます

', '.join(map(str, myList))

36
おそらく英語は彼の母国語ではありません。彼の多くが変換しているアイテムのリストに参加したいという彼の望みについて、あなたは確信が持てませんかstr?パーサーにファジーロジックを追加する必要がある可能性を考慮してください;-)
John Machin

3
@ジョン私はそれを考慮しました、しかし彼が英語が得意であるなら、私は彼を穏やかに押してSOの英語のレベルを彼の通常のレベルに上げるようにしたかったです。私は私の答えは、彼がであるかもしれない様々な解釈や状況を楽しまないと思います。
allyourcode

41

Pythonのマップ機能が利用できます。2つの引数を取ります。最初の引数は、リストの各要素に使用する必要がある関数です。2番目の引数は反復可能です。

a = [1, 2, 3]   
map(str, a)  
['1', '2', '3']

リストを文字列に変換した後、単純な結合関数を使用してリストを単一の文字列に結合できます

a = map(str, a)    
''.join(a)      
'123'

10
a=[1,2,3]
b=[str(x) for x in a]
print b

上記の方法は、リストを文字列に変換する最も簡単で最も一般的な方法です。別の短い方法は

a=[1,2,3]
b=map(str,a)
print b

4

これには3つの方法があります。

intのリストを取得したとしましょう

my_list = [100,200,300]
  1. "-".join(str(n) for n in my_list)
  2. "-".join([str(n) for n in my_list])
  3. "-".join(map(str, my_list))

ただし、https: //docs.python.org/2/library/timeit.htmlのpython Webサイトのtimeitの例で述べたように、マップを使用する方が高速です。だから私はあなたを使うことをお勧めします"-".join(map(str, my_list))


2

あなたの問題はかなり明確です。おそらく、別のリストのすべての要素を既存のリストに追加するために、extendを探しています。

>>> x = [1,2]
>>> x.extend([3,4,5])
>>> x
[1, 2, 3, 4, 5]

整数を文字列に変換したい場合は、str()または文字列補間を使用します。

>>> x = ['1', '2']
>>> x.extend([str(i) for i in range(3, 6)])
>>> x
['1', '2', '3', '4', '5']

これらはすべてpythonicと見なされます(そうです、ジェネレーター式はさらにpythonicですが、シンプルでトピックについては、ここではそのままにしておきます)。


2

例えば:

lst_points = [[313, 262, 470, 482], [551, 254, 697, 449]]

lst_s_points = [" ".join(map(str, lst)) for lst in lst_points]
print lst_s_points
# ['313 262 470 482', '551 254 697 449']

私に関しては、str各strリストの前にaを追加したいと思います:

# here o means class, other four points means coordinate
print ['0 ' + " ".join(map(str, lst)) for lst in lst_points]
# ['0 313 262 470 482', '0 551 254 697 449']

または単一のリスト:

lst = [313, 262, 470, 482]
lst_str = [str(i) for i in lst]
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

lst_str = map(str, lst)
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

1

たぶんあなたは文字列として数字を必要としない、ただやる:

functaulu = [munfunc(arg) for arg in range(loppu)]

後で文字列として必要な場合は、文字列またはフォーマット文字列を使用して実行できます。

print "Vastaus5 = %s" % functaulu[5]


-1

reprなぜ誰も気に入らないように見えるのですか?
python 3.7.2:

>>> int_list = [1, 2, 3, 4, 5]
>>> print(repr(int_list))
[1, 2, 3, 4, 5]
>>> 

注意してください、それは明示的な表現です。例を示します。

#Print repr(object) backwards
>>> print(repr(int_list)[::-1])
]5 ,4 ,3 ,2 ,1[
>>> 

pydocs-reprの詳細情報

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.