in
操作员
您可能想使用in
运算符而不是==
运算符 - 的in
运算符可让您检查特定项目是否在序列/集合中。
1 in [1,2,3] # True
1 in [2,3,4] # False
'a' in ['a','e','i','o','u'] # True
'a' in 'aeiou' # Also True
其他一些评论:
Sets
The in
与 a 一起使用时,运算符是最有效的set
,这是一种专门设计用于快速执行“项目 X 是这组项目的一部分”类型的操作的数据类型。*
vowels = set(['a','e','i','o','u'])
*dict
s 也很有效in
,它检查字典中是否存在某个键。
迭代字符串
字符串是 Python 中的序列类型,这意味着您不需要费尽心思获取长度然后使用索引 - 您只需迭代字符串即可依次获取每个字符:
E.g.:
for character in my_string:
if character in vowels:
# ...
用字符串初始化集合
在上面,您可能已经注意到,创建具有预设值的集合(至少在 Python 2.x 中)涉及使用列表。这是因为set()
类型构造函数接受一系列项目。您可能还注意到,在上一节中,我提到字符串是 Python 中的序列——字符序列。
这意味着如果你想要一个set字符,您实际上可以将这些字符的字符串传递给set()
构造函数 - 您不需要列出一个单字符字符串。换句话说,以下两行是等效的:
set_from_string = set('aeiou')
set_from_list = set(['a','e','i','o','u'])
整洁吧? :) 但请注意,如果您想制作一组,这也会让您感到困扰strings,而不是一组人物。例如,下面两行是not相同:
set_with_one_string = set(['cat'])
set_with_three_characters = set('cat')
前者是一个只有一个元素的集合:
'cat' in set_with_one_string # True
'c' in set_with_one_string # False
而后者是一个包含三个元素的集合(每个元素一个字符):
'c' in set_with_three_characters` # True
'cat' in set_with_three_characters # False
区分大小写
比较字符区分大小写。'a' == 'A'
是 False,原样'A' in 'aeiou'
。为了解决这个问题,您可以转换输入以匹配您要比较的内容的大小写:
lowercase_string = input_string.lower()