リストに整数または文字列が存在するかどうかを確認する方法

2020-07-01 python python-3.x list

整数がリストにあるかどうかを確認する方法を知りたいです。これが私が作ったコードです:

# "1" is a string. 10 is an integer.
my_list = ["1", 10]
if int in my_list:
    print("Integer in the list!")

このコードの何が問題になっていますか?そして、それをどのように機能させるのですか?

Answers

これの問題は、 int == 10がfalseであることです。 intはクラスであり、 10はクラスのインスタンスです。ただし、それらが互いに同等であるとは限りません。

最初にいくつかの前処理を行う必要があります。これを行うには多くの方法があり、最終的には最終目標が何であるかに依存しますが、例として:

my_list = ["1", 10]

# Create a new list that holds the type of each element in my_list
types = [type(x) for x in my_list]

if int in types:  # And check against the types, not the instances themselves
    print("Integer in the list!")

Cargcigenicateによって言及されているように、 int == "1"int == 10はどちらもFalseであるため、全体的なチェックはFalseです。やりたいことリストの要素は、のインスタンスであるか否かのチェックであるint 、彼らは同じであるではないかどうか、 int

これは、組み込み式anyジェネレータ式を使用することで、もう少し簡潔に行うことができます。

if any(isinstance(x, int) for x in my_list):
    ...

一般的にすることを注意使用isinstanceの上に好まれるべきtypeのオブジェクトの種類についての推論するとき、元のアカウントに継承がかかるため。

Related