当前位置: 首页 > 面试题库 >

在元组中查找元素并对其进行过滤

宋建本
2023-03-14
问题内容

假设我有一个类似的元组:

[('text-1','xxx'), ('img-1','iii'), ('img-2','jjj'), ('text-2','xxx')]

我想过滤出列表并生成一个以’img’开头的元素的新列表。因此,我的新列表将如下所示:

[('img-1','iii'), ('img-2','jjj')]

谢谢!


问题答案:

单程:

>>> l = [('text-1','xxx'), ('img-1','iii'), ('img-2','jjj'), ('text-2','xxx')]
>>> [t for t in l if t[0].startswith('img')]
[('img-1', 'iii'), ('img-2', 'jjj')]

另一种方式:

>>> filter(lambda x: x[0].startswith('img'), l)
[('img-1', 'iii'), ('img-2', 'jjj')]

第一种称为列表理解。有关相关技术,请参见FC的答案。基本语法为[{expression} for {item_var_or_vars} in {iterable} if {boolean_expression}]。它在语义上等效于以下内容:

new_list = []
for {item_var_or_vars} in {iterable}:
    if {boolean_expression}:
        new_list.append({expression})

if {boolean_expression}位是可选的,就像在for循环中一样。

第二个是简单的内置函数filter,它接受测试函数和可迭代函数,并返回一个包含“通过”测试函数的每个元素的列表。lambda,如果您以前从未看过,那只是定义函数的一种快速方法。您可以改为:

def keep_this_element(element):
    return element[0].startswith('img')   # returns True for ('img...', '...')

new_list = filter(keep_this_element, l)   # keeps only elements that return True


 类似资料:
  • 问题内容: 我有一个清单“ a” 我需要找到一个特定数字的所有元组。说1 我怎么做? 问题答案: 如果只希望第一个数字匹配,则可以这样操作: 如果您仅搜索其中包含1的元组:

  • 本文向大家介绍在JavaScript中查找大于其相邻元素的元素,包括了在JavaScript中查找大于其相邻元素的元素的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个JavaScript函数,该函数将数字数组作为第一个也是唯一的参数。 函数应从数组中查找并返回一个大于两者的数字,该数字应位于其直接右侧和左侧。如果数组中存在多个这样的元素,则我们的函数应返回其中任何一个。 例如- 如果输入

  • 问题内容: 我有一个多维数组,我想获取围绕该数组中特定元素的元素。 例如,如果我有以下内容: 如何找到以上任何一个元素中的所有8个元素?以及如何处理边缘的元素? 我发现的一种方法是为此编写9行代码,这很明显,但是有更好的解决方案吗? 问题答案: for (i = 0; i < array.length; i ) { for (j = 0; j < array[i].length; j ) { fo

  • 在C++中,给定两个值a,b使得a<=b,x等于a或b,如何有效地得到另一个值y(如果a==b,最终等于x)?

  • 我想从网站上提取一些赔率: https://www.oddsportal.com/soccer/europe/champions-league-2015-2016/real-madrid-manchester-city-dhjzn1pn/#1x2;2

  • 问题内容: 我正在尝试使用Selenium(版本2.28.0)在子元素中搜索元素,但是selenium des似乎并不将其搜索限制在子元素中。我做错了吗,还是有一种方法可以使用element.find搜索子元素? 例如,我使用以下代码创建了一个简单的测试网页: 我的python(2.6版)代码如下所示: 如果我运行: 它从第二部分返回html。因此,selenium的搜索范围并不限于element