Python 检查一个值是否等于数组中的任何值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18132912/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 09:57:33  来源:igfitidea点击:

Checking if a value is equal to any value in an array

python

提问by ThaRemo

I'm new to python (and programming in general) and I can't seem to find a solution to this by myself. I want to check the first letter of a string is equal to any letter stored in an array, something like this:

我是 python 的新手(以及一般的编程),我自己似乎无法找到解决方案。我想检查字符串的第一个字母是否等于存储在数组中的任何字母,如下所示:

letter = ["a", "b", "c"]
word = raw_input('Enter a word:')
first = word[0]

if first == letter:
    print "Yep"
else:
    print "Nope"

But this doesn't work, does anyone know how it will? Thanks in advance!

但这不起作用,有谁知道它会如何?提前致谢!

采纳答案by Sukrit Kalra

You need to use the inoperator. Use if first in letter:.

您需要使用in运算符。使用if first in letter:.

>>> letter = ["a", "b", "c"]
>>> word = raw_input('Enter a word:')
Enter a word:ant
>>> first = word[0]
>>> first in letter
True

And one False test,

还有一个错误的测试,

>>> word = raw_input('Enter a word:')
Enter a word:python
>>> first = word[0]
>>> first in letter
False

回答by Sukrit Kalra

Try using the inkeyword:

尝试使用in关键字:

if first in letter:

On your current code, you are comparing a string character (firstwhich equals the first character in word) to a list. So, let's say my input is "a word". What your code is actually doing is:

在您当前的代码中,您将一个字符串字符(first等于 中的第一个字符word)与一个列表进行比较。所以,假设我的输入是"a word". 你的代码实际上在做什么:

if "a" == ["a", "b", "c"]:

which will always be false.

这将永远是错误的。

Using the inkeyword however is doing:

in然而,使用关键字正在做:

if "a" in ["a", "b", "c"]:

which tests whether "a"is a member of ["a", "b", "c"]and returns true in this case.

在这种情况下,它测试是否"a"是 的成员["a", "b", "c"]并返回 true。

回答by squiguy

The hint is in your question. Use any. This uses a generator expression to check if it is True or False.

提示在您的问题中。使用any. 这使用生成器表达式来检查它是 True 还是 False。

any(first == c for c in letter)

回答by Brian H

The problem as I see it, is that you are asking does a character equal an array. This will always return false.

在我看来,问题在于您问的是一个字符是否等于一个数组。这将始终返回 false。

Try using a loop to check 'first' against each item in 'letter'. Let me know if you need help on figuring out how to do this.

尝试使用循环检查“信件”中的每个项目的“第一项”。如果您需要帮助了解如何执行此操作,请告诉我。