web-dev-qa-db-ja.com

Python 'list'オブジェクトをstrエラーに変換できません

最新のPython 3を使用しています

letters = ['a', 'b', 'c', 'd', 'e']
letters[:3]
print((letters)[:3])
letters[3:]
print((letters)[3:])
print("Here is the whole thing :" + letters)

エラー:

Traceback (most recent call last):
  File "C:/Users/Computer/Desktop/Testing.py", line 6, in <module>
    print("Here is the whole thing :" + letters)
TypeError: Can't convert 'list' object to str implicitly

修正するとき、それがどのように機能するかを説明してください:)私は固定行をコピーしたくない

10
Excetera

現在のところ、最終的なprintステートメントで文字列をリストと連結しようとしています。これによりTypeErrorがスローされます。

代わりに、最後のprintステートメントを次のいずれかに変更してください。

print("Here is the whole thing :" + ' '.join(letters)) #create a string from elements
print("Here is the whole thing :" + str(letters)) #cast list to string
16
mu 無
print("Here is the whole thing : " + str(letters))

最初にList-オブジェクトをStringにキャストする必要があります。

3
Leistungsabfall

str(letters)メソッドに加えて、リストを独立したパラメーターとしてprint()に渡すことができます。 doc文字列から:

_>>> print(print.__doc__)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.
_

したがって、複数の値をprint()に渡すことができます。これにより、sep(デフォルトでは_' '_)の値で区切られて順番に出力されます。

_>>> print("Here is the whole thing :", letters)
Here is the whole thing : ['a', 'b', 'c', 'd', 'e']
>>> print("Here is the whole thing :", letters, sep='')   # strictly your output without spaces
Here is the whole thing :['a', 'b', 'c', 'd', 'e']
_

または、文字列フォーマットを使用できます。

_>>> letters = ['a', 'b', 'c', 'd', 'e']
>>> print("Here is the whole thing : {}".format(letters))
Here is the whole thing : ['a', 'b', 'c', 'd', 'e']
_

または文字列補間:

_>>> print("Here is the whole thing : %s" % letters)
Here is the whole thing : ['a', 'b', 'c', 'd', 'e']
_

これらの方法は、_+_演算子を使用した文字列の連結よりも一般的に好まれますが、ほとんどの場合、個人的な好みの問題です。

1
mhawke