我有一个大约106对的列表,其中每一对的元素是-1、0或1:
[
[ 0, 1],
[-1, -1],
[ 0, -1],
[ 1, 0],
...
]
我想根据对的第一个元素是否为-1将这些对分成两组(即对的列表)。你知道吗
有没有一种方法可以有效地使用numpy?你知道吗
尽管我在上面使用了术语和符号,但事实上我对成对的实际类型和成对的“列表”是不可知的。使用任何numpy或python数据结构都可以得到最有效的解决方案。(但请不要熊猫。)
编辑:
例如,如果对的初始列表是
[
[ 0, -1],
[ 0, -1],
[ 1, -1],
[-1, -1],
[ 1, 0],
[-1, 1],
[-1, -1],
[ 0, 0],
[ 0, 1],
[-1, 0]
]
……一个可接受的结果将包括两份清单
[
[-1, -1],
[-1, 1],
[-1, -1],
[-1, 0]
]
…和
[
[ 0, -1],
[ 0, -1],
[ 1, -1],
[ 1, 0],
[ 0, 0],
[ 0, 1]
]
最后两个列表保留了元素在原始列表中出现的顺序。这是我的偏好,但不是必须的。例如,由
[
[-1, -1],
[-1, -1],
[-1, 0],
[-1, 1]
]
…和
[
[ 0, -1],
[ 0, -1],
[ 0, 0],
[ 0, 1],
[ 1, -1],
[ 1, 0],
]
…也可以接受。你知道吗
换句话说,一组中的所有成对元素的第一个位置应该是-1,而另一组中的所有元素的第一个位置应该是0或1
你可以自己动手! 我看到的唯一的效率是生成器或类似的东西,它以计算时间为代价节省内存
示例:
不如用这个条件两次来检查正负两方面
相关问题 更多 >
编程相关推荐