Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python TypeError:リスト(「int」ではない)のみをリストに連結できますソリューション

リストは他のリストに連結できます。これは、あるリストの内容を別のリストに追加できることを意味します。整数などの他のデータ型の値をリストに連結することはできません。

整数をリストに連結しようとすると、Pythonインタープリターは「TypeError:リスト(「int」ではなく)のみをリストに連結できます」というエラーを返します。

このガイドでは、このエラーの意味とそのしくみについて説明します。コード内のこの問題を修正するためのナビゲートに役立つ例を紹介します。

TypeError:リスト(「int」ではない)のみをリストに連結できます

連結により、2つのリストを簡単に追加できます。 extend()メソッドを使用してリストを別のリストに追加できますが、連結に必要なのは、プラス記号(+)の1つの記号のみです。

連結できるオブジェクトはリストだけではありません。辞書やタプルなどの反復可能なオブジェクトは、連結できます。

データ型が異なる2つのオブジェクトを連結することはできません。これは、リストを辞書と連結したり、整数をリストと連結したりできないことを意味します。

連結を使用して単一の整数項目をリストに追加すると、「TypeError:リスト(「int」ではなく)のみをリストに連結できます」が発生します。

シナリオ例

金曜日にカフェで特定のサンドイッチの注文数を追跡するプログラムを作成します。 75回以上注文されたすべてのサンドイッチを除外して、どのサンドイッチが最も人気があるかを確認したいと思います。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

まず、サンドイッチのリストと、サンドイッチごとに注文された数を含むリストの2つのリストを定義します。

sandwiches = ["Egg and Cress", "Chicken Club", "Hummus and Tomato", "Cheese"]
orders = [54, 77, 22, 98]

私たちのリストは、変数「サンドイッチ」と「注文」に割り当てられています。次に、75回以上注文されたサンドイッチのインデックス番号を追跡するリストを定義します。

orders_75 = []

現時点では、これらのリストは空です。これは、75回以上注文されたサンドイッチがまだわからないためです。

次に、サンドイッチと注文のリストを繰り返し処理して、75回以上注文されたサンドイッチを見つけます。これは、forループを使用して実行できます:

for s in range(0, len(sandwiches)):
	if orders[s] > 75:
		orders_75 = orders_75 + s

コードは、0の範囲と「サンドイッチ」リストの長さの各数値をループします。サンドイッチの「orders」リストの対応する値が75より大きい場合、そのサンドイッチのインデックス位置を「orders_75」リストに追加します。

次に、プログラムが機能するかどうかを確認するために、75回以上注文されたサンドイッチを出力するforループを作成します。

for o in orders_75:
	print(sandwiches[o])

Pythonコードを実行して、何が起こるか見てみましょう:

Traceback (most recent call last):
  File "main.py", line 9, in <module>
	orders_75 = orders_75 + s
TypeError: can only concatenate list (not "int") to list

コードはエラーを返します。

ソリューション

エラーメッセージに記載されているコード行を見てください:

	orders_75 = orders_75 + s

整数値をリストに連結しようとしています。連結は同じデータ型の反復可能なオブジェクトに対してのみ機能するため、これを行うことはできません。

このエラーを解決するには、append()を使用する必要があります リストにアイテムを追加するメソッド。このメソッドは、リストにアイテムを追加するために特別に設計されています。アイテムは、辞書、整数、浮動小数点数など、任意のデータ型にすることができます。

append()を使用するようにorders_75行のコードを変更します 方法:

	orders_75.append(s)

append()であるため、「orders_75」に値を割り当てる必要はありません。 メソッドは、アイテムをインプレースのリストに追加します。コードを実行してみましょう:

Chicken Club
Cheese

私たちのコードは、75回以上注文されたサンドイッチのリストを印刷します。この基準を満たすサンドイッチは、チキンクラブとチーズの2つです。

結論

「TypeError:リストにのみ(「int」ではなく)リストを連結できます」というエラーは、整数をリストに連結しようとすると発生します。

リストに連結できるのはリストのみであるため、このエラーが発生します。このエラーを解決するには、append()を使用します リストにアイテムを追加するメソッド。

これで、プロのようにこのPythonエラーを解決する準備が整いました!


  1. Python-リスト内の隣接する単語のみを結合する

    この記事では、数字ではなく、リスト内の隣接する単語を結合する方法を学習します。以下の手順に従って問題を解決してください。 リストを初期化します。 isalphaメソッドを使用して数字ではない単語を検索します。 4joinメソッドを使用して単語を結合します。 isdigitメソッドを使用して数字を検索し、最後にすべての数字を追加します。 結果を印刷します。 例 # initialzing the list strings = ['Tutorials', '56', '45', 'point', '1', 

  2. 演算子でPythonを高速化するにはどうすればよいですか?

    python演算子は、リスト全体をトラバースするため、リストO(n)でのパフォーマンスが非常に悪くなります。 setやdict(非常に高速なルックアップを持つハッシュされたデータ構造)のようなものを使用して、〜O(1)時間で同じ結果を得ることができます! ただし、これは、表示しているデータ構造のタイプにも依存します。これは、sets / dictsでのルックアップは高速ですが、挿入にはリストよりも時間がかかる場合があるためです。したがって、このスピードアップは実際にはタイプによって異なります。