我正在回答这个问题,我更喜欢这里的生成器表达并使用它,我认为它会更快,因为生成器不需要先创建整个列表:
>>> lis=[['a','b','c'],['d','e','f']]
>>> 'd' in (y for x in lis for y in x)
True
Run Code Online (Sandbox Code Playgroud)
Levon在他的解决方案中使用了列表理解,
>>> lis = [['a','b','c'],['d','e','f']]
>>> 'd' in [j for i in mylist for j in i]
True
Run Code Online (Sandbox Code Playgroud)
但是当我做这些LC的时间结果比生成器快时:
~$ python -m timeit -s "lis=[['a','b','c'],['d','e','f']]" "'d' in (y for x in lis for y in x)"
100000 loops, best of 3: 2.36 usec per loop
~$ python -m timeit -s "lis=[['a','b','c'],['d','e','f']]" "'d' in [y for x in lis for y …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的元组列表:
CODES = (
('apple', 'reddelicious'),
('caramel', 'sweetsticky'),
('banana', 'yellowfruit'),
)
Run Code Online (Sandbox Code Playgroud)
检查该元组中是否存在值的最佳方法是什么?例如,我希望能够说:
'apple' in CODES
Run Code Online (Sandbox Code Playgroud)
并得到真实
使用 numpy 数组,您可以使用切片检查特定列,即array[:, 0]. 对于列表,检查 2D 元素是否在内部就像 一样简单["one", "two"] in some_list。然而,仅仅查看是否"one"存在就需要迭代元素,即["one" == item[0] for item in some_list]。
我非常喜欢 numpy 数组,除了我的数组需要修改(在末尾添加并删除值)。我喜欢使用列表,因为它们使用起来非常简单。我正在考虑数据帧,但我觉得我应该能够找到一些聪明而有效的方法来使用列表进行这种操作。
我有一个嵌套的Python字符串列表,如下所示:
l = [['a', 'b', 'c'], ['d', 'e', 'f']]
Run Code Online (Sandbox Code Playgroud)
我想快速测试一个给定的字符串是否等于任何子列表中的任何字符串.我可以编写一个函数来展平列表,但测试需要在我的程序的时间关键部分进行.是否有更快或更优雅的方式来做到这一点?