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

停止列表选择?

湛铭
2023-03-14
问题内容

想象一下,我有一个元组的订单列表:

s = [(0,-1), (1,0), (2,-1), (3,0), (4,0), (5,-1), (6,0), (7,-1)]

给定一个参数X,我想选择所有第一个元素等于或大于等于X但大于但不包括具有-1的第一个元组的第二个元素。

例如,如果X = 3要选择列表[(3,0), (4,0)]

我的一个主意是:使用

E = min (x [0] for x in s if (x [0] >= X) and (x [1] == -1) )

然后在X和之间使用键选择元素E

R = [x for x in s if X <= x [0] < E]

这给了我我在R中想要的东西,但是它看起来效率很低,涉及两次表扫描。我可以在for循环中执行此操作,丢弃键过小的元组,并在碰到第一个阻塞元组时 中断
。但是与列表选择相比,像狗一样奔跑。

有一种超高效的python式(2.7)方法吗?


问题答案:

您可以简单地从列表中过滤出元组作为生成器表达式,然后在获取第二个元素为的第一个元组时停止从生成器表达式中获取值-1,就像这样

>>> s = [(0,-1), (1,0), (2,-1), (3,0), (4,0), (5,-1), (6,0), (7,-1)]
>>> from itertools import takewhile
>>> X = 3
>>> list(takewhile(lambda x: x[1] != -1, (item for item in s if item[0] >= X)))
[(3, 0), (4, 0)]

在这里,生成器表达式(item for item in s if item[0] >= X)将按需提供一个一个的值(它们不会一次全部生成,因此我们在这里节省了内存)大于或等于X

然后,我们把值从发电机的表情,只是直到我们找到一个元组第二个元素不等于-1itertools.takewhile



 类似资料:
  • 问题内容: 我需要自定义波斯语的全文搜索。并为此语言自定义Stop / Noise单词和同义词。 我的SQL Server版本是2016,并且已安装全文搜索。 问题答案: 要在SQL Server停止列表,全文目录等中使用波斯语,我们应该使用。如果您不使用目录,建议您将其更改为,有时为空,如下所示: 您的问题可以通过以下查询针对任何语言解决:

  • 环境: PrimeFaces 6.1 JSF 2.2 Tomcat 7.0.23 Java1.7。0_79 实现了一个带有复选框选择的TreeTable,并且需要分别防止父节点和子节点的选择向上和向下传播以进行客户端和服务器端处理。 示例树: 父节点 --子节点1 --子子节点1.1 --子节点2 ----子子节点2.1 所需行为:选择节点时,只应选中该节点的复选框。 实际行为(开箱即用): 选择

  • 我在IE上的css悬停有问题。 简化;我基本上有一个容器div,它将在悬停时显示一个小的div,里面有一些标记中选择一个,:hover由于某种原因将不再工作,div将消失。 在chrome/firefox等中尝试此示例以查看所需的结果&然后在IE11中再试一次以查看问题所在。 null null

  • 问题内容: 使用Twitter4j提供的代码示例,我想在收集到1000个状态列表后停止流,并返回此列表。我怎样才能做到这一点? 问题答案: 将异步代码强制进入同步模式不是一个好主意。换句话说:使您的check方法也异步,传递一个回调参数而不是返回一个值;并将回调传递给execRequest(只需s将对每个分配的调用替换为该回调)。正如Jai所建议的那样,您不一定需要在应用程序范围的事件总线上触发事

  • 问题内容: 我想停止处理程序中的此间隔重复运行。那有可能吗? 问题答案: 您需要在点击处理程序范围内将的返回值设置为变量,然后像这样使用:

  • 问题内容: Docker提供了一种列出正在运行的容器或所有容器(包括已停止的容器)的方法。 这可以通过以下方式完成: 或通过 我们有办法只列出已停止的容器吗? 问题答案: 只能使用以下命令列出停止的容器: 要么

  • Docker为您提供了一种列出正在运行的容器或所有容器(包括停止的容器)的方法。 这可以通过以下方式实现: 或者 我们是否有办法只列出已停止的容器?

  • 1.若要暂停训练,请按下该按钮。显示暂停。若要继续训练,请点击绿色箭头图标。 2.若要停止训练,在记录训练期间或处于暂停模式时长按该按钮三秒钟,直至计数器清零。或者您可以点击并按住显示屏上的红色停止按钮。 如果在暂停后停止训练,则暂停后经过的时间不包括在总训练时间内。