文字列がリストと見なされるかどうかに興味があります。
4 に答える
文字列とリストはどちらもシーケンスであるため、for
ループはそれらを反復できますが、これらは明らかに 2 つの異なるタイプです。
for c in 'abcd':
print c
for i in [1,2,3,4]:
print i
文字列は、猫がマシュマロのようなリストです。彼らは多くの点で似ています-あなたはそれらを撫でることができます、彼らは両方とも柔らかく、あなたに本当に甘いことができ、あなたの床を台無しにすることができます.
そして、マシュマロを食べることはできますが、猫を食べようとすると、顔に大きな鋭い血まみれのエラーが表示されます.
文字列とリストの場合も同様です。それらは両方ともシーケンスであるため、多くの同じことを行うことができますが、文字列でのみ行うべきこともあれば、リストのみで行うべきこともあります。
ほぼすべての言語で、文字列は実際には文字のリストです。その意味では、文字列はリストです。ただし、文字列は独自のエンティティです。これらには独自のメソッドがあり、すべてのリスト メソッドを文字列に使用できるわけではありません。ただし、重複があります。文字列をリストであるかのようにスライス、反復、および連結することができ、いくつかのリスト メソッド (つまり.len
およびindex
) を使用することもできます。ただし、最大の違いは、Python の文字列はミュータブルではないということです。あなたができるリストでmy_list[5] = "a"
。これを文字列で試すと、TypeError
.
編集:
別の回答のコメントで述べられているように、不変性は最大の違いではないかもしれません (それは意見の問題です)。2 次元、3 次元、さらには 4 次元のリストを簡単に作成できますが、文字列ではそのようなことはできません (ただし、my_list = ["foo", "bar"]
を呼び出すことができるため、おそらく多次元と見なすことができますが、単なる文字列my_list[1][2]
ではなく、文字列とリスト)。「List Of Lists」のように、誰かが「String Of Strings」を作成できたら、とても感銘を受けます。
他の人が言ったことに加えて。文字列は変更可能でもハッシュ可能でもありません。文字列をその場で変更することはできず、辞書のキーやセットのメンバーになることができます。リストは変更可能であり、ハッシュ可能ではありません。リストをその場で変更できますが、辞書またはセットのメンバーのキーにすることはできません。
# Hashability
>>> {['a', 'b'] : 1} # With lists: fails
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> {'ab' : 1} # With strings: works
{'ab': 1}