A = ['1','1','1','3','3','4']
B = ['5','9','3','4','8','1']
当列表A中的值更改时,例如从1更改为3。 在列表B中求一组值的和,例如(5,9,3)的和。 表A和表B大小相同。你知道吗
In list A = ['1','1','1','3','3','4']
SEARCH - 1) where value changes from 1 to 3, 2) where value changes from 3 to 4.In list B = ['5','9','3','4','8','1']
RESULT - 1) sum only 5+9+3, 2) sum only 4+8.
有办法吗? 因为我想不出一个合乎逻辑的方法来绕过它。你知道吗
我的代码开始:
A = ['1','1','1','3','3','4']
B = ['5','9','3','4','8','1']
C=[int(value) for value in A]
print(C)
for i in C:
if C[:-i] == C[:i]:
这将检查A的每个相邻值,看看它们是否相同,但我不知道如何将其与列表B的值联系起来。你知道吗
你需要做的是想一个更简单的问题:
假设你有:
我们怎样才能发现A发生了变化?你知道吗
我们需要保留一个
A
的副本,以便在我们认为发生了变化时进行比较:现在看来你已经用类似的想法更新了你的问题:
现在我们必须检测变化:
现在我们知道哪些数字已经改变了,我们可以从
B
中选取相应的项目:所以要回顾一下:
注意复制列表的用法:
注意列表理解的用法:
注意
zip
函数的用法:我将把它作为一个练习,把这些步骤折叠成一个单子的总和。你知道吗
现在我明白了列表
A
本身不会改变,但是您表达了改变的想法,即列表有分区,其中有不同的相邻元素,然后想到了不同的解决方案:根据您的原始数据:
我们可以使用
defaultdict
对这些数据进行分组:只是为了展示我们收集到的:
现在我们可以计算一些和:
关于
defaultdict
的注释:创建实例时:
这将创建一个
defaultdict
,当它遇到新的键时,它将创建参数的一个实例。在本例中,它创建一个新的list
所以每行:
当
a
是D
以前从未见过的键时,将创建一个新的list
,并将.append(....
应用于该键。你知道吗相关问题 更多 >
编程相关推荐