相关疑难解决方法(0)

查找最接近列表中未完全排序的值的项目的索引

作为一个例子,我的列表是:

[25.75443, 26.7803, 25.79099, 24.17642, 24.3526, 22.79056, 20.84866, 19.49222, 18.38086, 18.0358, 16.57819, 15.71255, 14.79059, 13.64154, 13.09409, 12.18347, 11.33447, 10.32184, 9.544922, 8.813385, 8.181152, 6.983734, 6.048035, 5.505096, 4.65799]
Run Code Online (Sandbox Code Playgroud)

我正在寻找最接近的值的索引11.5.我尝试了其他方法,如二进制搜索,bisect_left但它们不起作用.

我无法对此数组进行排序,因为该值的索引将用于类似的数组以获取该索引处的值.

python search list

51
推荐指数
2
解决办法
5万
查看次数

根据连续项目的相似性对双面项目列表进行排序

我正在寻找某种"多米诺排序"算法,该算法根据后续项目的"切线"边的相似性对双面项目列表进行排序.

假设以下列表中的项目由2元组表示:

>>> items
[(0.72, 0.12),
 (0.11, 0.67),
 (0.74, 0.65),
 (0.32, 0.52),
 (0.82, 0.43),
 (0.94, 0.64),
 (0.39, 0.95),
 (0.01, 0.72),
 (0.49, 0.41),
 (0.27, 0.60)]
Run Code Online (Sandbox Code Playgroud)

目标是对该列表进行排序,使得每两个后续项目(损失)的切线末端的平方差的总和最小:

>>> loss = sum(
...     (items[i][1] - items[i+1][0])**2
...     for i in range(len(items)-1)
... )
Run Code Online (Sandbox Code Playgroud)

对于上面的示例,这可以通过仅处理所有可能的排列来计算,但是对于具有更多项的列表,这变得很快变得不可行(O(n!)).

如下所示,逐步选择最佳匹配的方法

def compute_loss(items):
    return sum((items[i][1] - items[i+1][0])**2 for i in range(len(items)-1))


def domino_sort(items):
    best_attempt = items
    best_score = compute_loss(best_attempt)
    for i in range(len(items)):
        copy = [x for x in items]
        attempt = [copy.pop(i)]
        for j in range(len(copy)): …
Run Code Online (Sandbox Code Playgroud)

python sorting algorithm

12
推荐指数
1
解决办法
290
查看次数

如何在两个数组中找到最接近的元素?

我有两个numpy数组,比如X=[x1,x2,x3,x4], y=[y1,y2,y3,y4].其中三个元素很接近,第四个元素可能接近或不接近.

喜欢:

X   [ 84.04467948  52.42447842  39.13555678  21.99846595]
y   [ 78.86529444  52.42447842  38.74910101  21.99846595]
Run Code Online (Sandbox Code Playgroud)

或者它可以是:

X   [ 84.04467948  60  52.42447842  39.13555678]
y   [ 78.86529444  52.42447842  38.74910101  21.99846595]
Run Code Online (Sandbox Code Playgroud)

我想定义一个函数来查找两个数组中的相应索引,如第一种情况:

  • y[0]对应X[0],
  • y[1]对应X[1],
  • y[2]对应X[2],
  • y[3] 相当于 X[3]

在第二种情况下:

  • y[0]对应X[0],
  • y[1]对应X[2],
  • y[2] 相当于 X[3]
  • y[3]对应于X[1].

我不能写一个完全解决问题的功能,请帮忙.

python python-2.7

6
推荐指数
2
解决办法
1909
查看次数

如何编写一个在整数列表中找到最接近值的函数?

mylist = [1, 2, 3, 4, 5, 6, 7, 9, 10]
mynumber = 8
Run Code Online (Sandbox Code Playgroud)

我想找到最接近mynumber的列表中的数字.我怎么能写一个可以做到这一点的函数?

我还是初学者,所以我怎么能只用循环和if语句来做呢?

python

2
推荐指数
1
解决办法
739
查看次数

找到与列表中给出的数字最接近的数字 ~ Python

与列表中给出的数字相比,您将如何找到最接近的数字?

这是我迄今为止尝试过的,但没有成功:

setted_list = [2, 9, 6, 20, 15]
value_chosen = 17

while True:
    final_value = setted_list[0]
    if setted_list[1] - value_chosen < setted_list[0] - value_chosen:
        final_value = setted_list[1]
    if setted_list[2] - value_chosen < setted_list[1] - value_chosen:
        final_value = setted_list[2]
    if setted_list[3] - value_chosen < setted_list[2] - value_chosen:
        final_value = setted_list[3]
    if setted_list[4] - value_chosen < setted_list[3] - value_chosen:
        final_value = setted_list[4]
print(final_value)
Run Code Online (Sandbox Code Playgroud)

我的输出始终是setted_list[2]. 我的算法哪里出错了?

python algorithm

2
推荐指数
3
解决办法
6950
查看次数

在列表中找到最接近数字的代码时遇到问题

我正在制作一些代码,允许我从列表中选择最接近的数字,我已设法做到这一点.但是当找到最接近的数字并且它超过'myNumber'时,我希望python在它之前打印出列表中的数字.

例如;

如果我有一个清单;

TwoN = [1,2,4,8,16,32,64,128,256,512, 1024, 2048, 4096, 8192]
Run Code Online (Sandbox Code Playgroud)

myNumber = 30
Run Code Online (Sandbox Code Playgroud)

我希望python打印16而不是32

这是我到目前为止所做的代码......

TwoN = []
for i in range(12):
    TwoN.append(2**i)
print(TwoN)

myNumber = 30
closest = TwoN[0]
for i in range(1, len(TwoN)):
    if abs(TwoN[i] - myNumber) < abs(closest - myNumber):
        closest = TwoN[i];


Sum = myNumber - closest
if Sum < 0:
    closest = TwoN[(i-1)]
    print(closest)
else:
    print(closest)
Run Code Online (Sandbox Code Playgroud)

当myNumber = 30时,程序将输出1024,当我希望它输出16 ..

任何帮助表示赞赏谢谢

python python-3.x

2
推荐指数
1
解决办法
61
查看次数

将数字舍入为一组给定值

这里谈论Python 3。

我希望将数字四舍五入为一组给定的可能变化的值

假设value_set = [x, y, z]为了这个例子,x, y, z = 1, 3.12, 4我正在寻找一个函数,它将给定的浮点四舍五入到最接近的数字

custom_round(0) --> 1

custom_round(2.7) --> 3.12

请注意,它应该足够通用,value_set长度也会有所不同

rounding python-3.x

0
推荐指数
1
解决办法
2397
查看次数

标签 统计

python ×6

algorithm ×2

python-3.x ×2

list ×1

python-2.7 ×1

rounding ×1

search ×1

sorting ×1