python - 在Python中查找0-100之间的值范围内的索引

标签 python list syntax range

这是一个由两部分组成的问题,我必须通过列表中任意数量的整数的随机范围来选择 2 个索引。如果两者都在同一范围内,则无法返回两者

Selection1 = random.randint(0,100)
Selection2 = random.randint(0,100)

为了论证,请说:

Selection1 = 10
Selection2 = 17
And the list would be like so [25, 50, 75, 100]

两者都会返回索引 0,因为它们在 0-25 之间

所以两者都会落入第一个索引范围,问题是我在尝试将其放入这个范围(即:0-25)时遇到一些问题,这将返回第一个索引(返回列表[0])

Python 中此类逻辑的语法是什么?

我确信我可以弄清楚如何返回不同的索引(如果它们落在同一范围内),可能只是循环重置为循环,但如果我能得到一些建议,那就不会有什么坏处。

我将给出我现在正在使用的代码作为指导。主要是在底部,这是我挣扎的地方。

代码在这里

def roulette_selection(decimal_list, chromosome_fitness, population):
    percentages = []
    for i in range(population):
        result = decimal_list[i]/chromosome_fitness
        result = result * 100
        percentages.append(result)

    print(percentages)
    range_in_fitness = []
    current_percent = 0

    for i in range(population):
        current_percent = percentages[i] + current_percent
        range_in_fitness.append(current_percent)
    parent1 = random.randint(0, 100)
    parent2 = random.randint(0, 100)

    for i in range(population):
        if parent1 >= range_in_fitness[i] and parent1<=range_in_fitness[i+1]:


    print(parent1, parent2)
    print(range_in_fitness)

最佳答案

如果您的范围列表已排序,或者可以接受排序,并且是连续的(无间隙),则可以使用 Python 的 bisect模块以有效的方式做到这一点。示例:

>>> l = [25, 50, 75, 100]
>>> import bisect
>>> bisect.bisect(l, 10)
0
>>> bisect.bisect(l, 17)
0
>>> bisect.bisect(l, 55)
2
>>> bisect.bisect(l, 25)
1

Bisect 返回输入数字应落入列表中以维持排序顺序的索引。请注意,一开始考虑这有点令人困惑;在上述 55 的情况下,它返回 2,因为它应该插入到索引 2 处,因为它位于索引 1 处的当前值和2。如果您给它一个恰好在范围边界上的数字,它将“向右下降”,如 bisect(l,25) 示例所示。

链接的文档包括一组使用 bisect 搜索排序列表的方法。

关于python - 在Python中查找0-100之间的值范围内的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29088837/

相关文章:

python - 如何在 Keras 中组合两个具有不同输入大小的 LSTM 层?

python - 将列表列转换为二维 numpy 数组

syntax - ksh bad [ … ] 语法不会导致错误

python - Python批量查询结果分组

python - Django - 跨多个 View 形成并保存进度

python - 根据 pandas 数据框第 3 列中的标准,按天分组的 2 列的加权平均值

list - "Something' s 错误,可能是使用 itemize 时缺少\item"错误

python - 尝试拆分数字但列表索引超出范围

javascript - 使用 void 作为语法糖来防止隐式全局变量,是或否?

syntax - 这种符号的名称是什么?