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
其他一些评论:
套
运算符在in
与 a 一起使用时效率最高set
,这是一种专门设计用于快速“是这组项目的 X 项”类型操作的数据类型。*
vowels = set(['a','e','i','o','u'])
* dict
s 也很有效in
,它检查字典中是否存在键。
迭代字符串
字符串是 Python 中的一种序列类型,这意味着您无需费力获取长度然后使用索引 - 您只需遍历字符串即可依次获取每个字符:
例如:
for character in my_string:
if character in vowels:
# ...
用字符串初始化集合
在上面,您可能已经注意到创建具有预设值的集合(至少在 Python 2.x 中)涉及使用列表。这是因为set()
类型构造函数采用一系列项目。您可能还注意到,在上一节中,我提到字符串是 Python 中的序列——字符序列。
这意味着如果您想要一组字符,您实际上可以将这些字符的字符串传递给set()
构造函数 - 您不需要列出一个单字符串。换句话说,以下两行是等价的:
set_from_string = set('aeiou')
set_from_list = set(['a','e','i','o','u'])
整齐吧?:) 但是请注意,如果您尝试制作一组字符串,而不是一组字符,这也可能会咬到您。例如,以下两行不一样:
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'
是假的,因为是'A' in 'aeiou'
。为了解决这个问题,您可以转换输入以匹配您要比较的情况:
lowercase_string = input_string.lower()