python - 匹配列表python中相反数字的出现

标签 python list numpy

我有一个这样的列表

results = [100, 100, -100, 100, -100, -100]

我想找出相反数字的第一次出现。所以前 100 将与第一个 -100 匹配,第二个 100 将与第二个 -100 匹配。

我想要这样的输出位置:

[0, 2], [1, 4], [3, 5]

即:[0,2] 表示 results[0]results[2],其中第一次出现的 100 与第一次出现 -100

编辑:你可以假设总是有相同数量的正数/负数,并且列表将只包含 1 个数字

我们会提供任何帮助

最佳答案

对于列表仅包含 2 个整数(x-x)的简单情况,您可以简单地将 zip() 放在一起指标:

indexes = [[],[]]
for i,x in enumerate(results):
    indexes[0].append(i) if x > 0 else indexes[1].append(i)
list(zip(*indexes))

例子:

>>> results = [100, 100, -100, 100, -100, -100]
>>> indexes = [[],[]]
>>> for i,x in enumerate(results): indexes[0].append(i) if x > 0 else indexes[1].append(i)
... 
>>> list(zip(*indexes))
[(0, 2), (1, 4), (3, 5)]

注意小输入 2 个单独的列表推导(例如 [i for i,x in enumerate(results) if x > 0] 可能比附加 for 更快> 循环。

关于python - 匹配列表python中相反数字的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43142905/

相关文章:

python - 如何更改满足特定条件的数据框中的第一个值

list - 在CMake中加入列表的最佳/最短方法

sharepoint - 在 SharePoint 列表中表示父子关系

list - KDB:如何从列表中做出(尽可能)均匀分布的选择?

python - 为 Windows 64 位安装 Anaconda Python、pyhdf 和 netcdf4

python - 求两个张量的交集。返回两个输入张量中已排序的唯一值

python - 从图像生成 bool 矩阵

python - 在 vagrant 中为多个 Django 应用程序设置允许即时更新的开发环境

python - 如何对numpy数组的每两列执行操作?

python - matplotlib 在 mac osx 上挂起并且不显示图形