in
运算符
如果你想检查一个特定的项是否在序列/集合中,你可能会使用in
运算符而不是==
运算符- in
运算符可以实现此功能。
1 in [1,2,3]
1 in [2,3,4]
'a' in ['a','e','i','o','u']
'a' in 'aeiou'
其他一些评论:
集合
in
运算符在与 set
配合使用时效率最高。 set
是一种特别设计用于快速执行 "项目 X 是否是这组项目的一部分" 类型操作的数据类型。*
vowels = set(['a','e','i','o','u'])
*dict
在使用in
检查字典中是否存在一个键时也非常高效。
迭代字符串
在Python中,字符串是一个序列类型,这意味着您不需要费心计算长度并使用索引 - 只需迭代字符串,就可以依次获取每个字符:
例如:
for character in my_string:
if character in vowels:
用字符串初始化一个set集合
在上面的例子中,你可能会注意到,在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
'c' in set_with_one_string
而后者是一个由三个元素组成的集合(每个元素都是一个字符):
'c' in set_with_three_characters`
'cat' in set_with_three_characters
大小写敏感
比较字符是区分大小写的。例如:'a' == 'A'
返回 False,'A' in 'aeiou'
也返回 False。为了解决这个问题,你可以将输入转换为与你要比较的内容的大小写相匹配:
lowercase_string = input_string.lower()