想象一下布尔值的列表,它们都是真的:

bools = [True] * 100

然后,我有一个元组,它对应于我要设置为False的bool的索引:

false_index = (0,2,4)

for element in false_index:
    bools[element] = False

下次我想用相同的元组设置FALSE元素时,FALSE_INDEX的索引需要考虑已经翻转的列表的False个值.

我想要一个函数,它接受已翻转的值和要翻转的新值的索引,并返回要翻转的真值的元组,如下所示:

old_false_index = (0,2,4)
new_false_index = (0,2,4)
check_index(old_false_index, new_false_index) # output (1,5,7)

一个更直观的例子: 有关8个True值的列表,请执行以下操作:

[
1
1
1
1
1
1
1
1
]

第一个元组在给定的索引处将元素更改为False.因此,对于(0,2,4),列表现在已更改为:

[
1 # index 0
1 
1 # index 2
1
1 # index 4
1
1
1
]

下一次使用相同的元组更改索引时,索引已更改:

[
0
1 # index 1 but the first element that can be changed
0
1
0 
1 # index 5 but the third element that can be changed
1
1 # index 7 but the fourth element that can be changed
]

推荐答案

您可以这样做:

def check_index(old_false_index, new_false_index):
    result = []
    for new_index in new_false_index:
        for old_index in old_false_index:
            # check if a smaller index already exists in the old
            # for each one you find, increment by one
            if old_index <= new_index:
                new_index += 1
        result.append(new_index)
    return tuple(result)

old_false_index = (0,2,4)
new_false_index = (0,2,4)
print(check_index(old_false_index, new_false_index)) # (1, 5, 7)

请记住,如果您重复执行此操作,则必须将结果与old_false_index相加,才能以相同的方式再次使用old_false_index.

old_false_index = (0,2,4)
new_false_index = (0,2,4)
actual_new_false_indexes = check_index(old_false_index, new_false_index)
old_false_index += actual_new_false_indexes

Python相关问答推荐

如何使用Selenium访问svg对象内部的元素

Python panda拆分列保持连续多行

当密钥是复合且唯一时,Pandas合并抱怨标签不唯一

在Python中对分层父/子列表进行排序

Polars LazyFrame在收集后未返回指定的模式顺序

仿制药的类型铸造

如何在Windows上用Python提取名称中带有逗号的文件?

如何在类和classy-fastapi -fastapi- followup中使用FastAPI创建路由

修复mypy错误-赋值中的类型不兼容(表达式具有类型xxx,变量具有类型yyy)

Python虚拟环境的轻量级使用

把一个pandas文件夹从juyter笔记本放到堆栈溢出问题中的最快方法?

所有列的滚动标准差,忽略NaN

启动带有参数的Python NTFS会导致文件路径混乱

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

在Google Drive中获取特定文件夹内的FolderID和文件夹名称

判断Python操作:如何从字面上得到所有decorator ?

如何在一组行中找到循环?

高效生成累积式三角矩阵

Django.core.exceptions.SynchronousOnlyOperation您不能从异步上下文中调用它-请使用线程或SYNC_TO_ASYNC

一维不匹配两个数组上的广义ufunc