Python ドキュメントでは、リストは次のように定義されています。
通常、同種のアイテムのコレクションを格納するために使用されます (正確な類似度はアプリケーションによって異なります)。
同種のアイテムのコレクションを格納するために使用されるのはなぜですか?
では、string と int 項目も同種ですか?
a = [12,"hello"]
同種とは、「同じまたは類似の種類または性質の」という意味です。
任意の値を他の値と一緒にリストに格納できますが、その場合、シーケンスを扱うときに「種類または性質」の定義を広げる必要があります。この拡大 (または「統合」) 中に、シーケンス内のすべてのアイテムに対して実行できる一連の操作は、すべてのアイテム間で共有される「最も一般的な操作のセット」になります。
これが、「[list are]通常、同種のアイテムのコレクションを格納するために使用される」理由です。そのため、シーケンス内のアイテムを適切なレベルの統一で扱うことができます。
# a list of animals that can "speak"
animals = [Dog(), Cat(), Turkey()]
for a in animals:
a.speak()
# .. but a string cannot "speak"
animals = [Dog(), "Meow!", Turkey()]
一般的な使用例について説明しています (そのため、「通常」と記載されています)。あなたの質問の例に示されているように、均質性は期待も強制もされていません。アイテムが「同種」であることの意味さえ正確に定義されていません。ドキュメントでは、これは「アプリケーションによって異なる」と述べています。