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
其他一些cmets:
套装
in 运算符与 set 一起使用时效率最高,set 是一种专门设计用于快速执行“项目 X 是否属于这组项目”类型的操作的数据类型。*
vowels = set(['a','e','i','o','u'])
*dicts 对in 也很有效,它检查字典中是否存在键。
迭代字符串
字符串是 Python 中的序列类型,这意味着您无需费力获取长度然后使用索引 - 您只需遍历字符串即可获取每个字符反过来:
例如:
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'])
整洁,对吧? :) 但是请注意,如果您尝试制作一组字符串,而不是一组字符,这也会给您带来麻烦。例如,以下两行不相同:
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()