概要
Python の in 演算子に関して詳細に記述してある「python `in` operator use cases」という記事を見つけた。
日本語を使うとどうなるかとりあえず試してみた。
ソース
いつも通り unittest で記述した。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
class TestIn(unittest.TestCase):
def test_list(self):
"""
list
"""
lst = ['あ', 'い', 'う', 'え', 'お']
self.assertTrue('あ' in lst)
self.assertFalse('か' in lst)
def test_nested_list(self):
"""
nested list
"""
lst = [
['あ', 'い', 'う', 'え', 'お'],
['さ', 'し', 'す', 'せ', 'そ'],
[],
]
self.assertFalse('あ' in lst)
self.assertTrue(['あ', 'い', 'う', 'え', 'お'] in lst)
self.assertTrue([] in lst)
def test_dict(self):
"""
dict
"""
dct = {'名前': 'サンプル', '国': '日本', 'OS': 'Mac',
'言語': {'web': 'python'}}
self.assertTrue('名前' in dct)
self.assertFalse('web' in dct)
def test_dict_class(self):
"""
dict class
"""
class Person(dict):
pass
p = Person()
self.assertEqual({}, p)
p['name'] = '名前'
self.assertTrue('name' in p)
def test_set(self):
"""
set
"""
stlst = {'foo', 'bar', 'foo'}
self.assertEqual(set(['foo', 'bar']), stlst)
self.assertTrue('foo' in stlst)
def test_generator(self):
"""
generator
"""
self.assertTrue(2, xrange(4))
def test_string(self):
"""
string
"""
msg = 'Python はシンプルで強力な言語です'
self.assertTrue('Python' in msg)
self.assertTrue('強力' in msg)
self.assertEqual(0, msg.find('Python'))
self.assertEqual(25, msg.find('強力'))
if __name__ == '__main__':
unittest.main()
まとめ
当然のように日本語でも特に問題はない。in はそれほど複雑ではないが、いろいろと応用が効いて便利。