Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以mod x_i的数量递增python列表,其中x_i取决于位置_Python_Python 3.x_Numpy_Modulo - Fatal编程技术网

以mod x_i的数量递增python列表,其中x_i取决于位置

以mod x_i的数量递增python列表,其中x_i取决于位置,python,python-3.x,numpy,modulo,Python,Python 3.x,Numpy,Modulo,我有两张长度相等的单子。 我将列表1增加一个数量,但每个条目都必须由列表2中相应的条目修改 我正在做的是: for ii in range(len(list1)): list1[ii] = (list1[ii]+val) % list2[ii] 有没有更好的方法(可能使用numpy)?我找不到。这些列表很长,因此性能是一个问题。您可以使用并减少所涉及的索引量: for ii, (a, b) in enumerate(zip(list1, list2)): list1[ii] =

我有两张长度相等的单子。 我将列表1增加一个数量,但每个条目都必须由列表2中相应的条目修改

我正在做的是:

for ii in range(len(list1)):
    list1[ii] = (list1[ii]+val) % list2[ii]
有没有更好的方法(可能使用numpy)?我找不到。这些列表很长,因此性能是一个问题。

您可以使用并减少所涉及的索引量:

for ii, (a, b) in enumerate(zip(list1, list2)):
    list1[ii] = (a + val) % b
也就是说,您最好只使用列表理解来避免完全需要索引,因此您可以放弃
enumerate
,只使用
zip
,这样代码看起来更干净(引导代码更快):


请注意,在这两个示例中,我都将您的
列表重命名为
list1
,因为名称隐藏
列表
构造函数是一个糟糕的想法。

可以使用numpy

import numpy as np
numpy_list1 = np.array(list1)
numpy_list2 = np.array(list2)

mod_values1 = np.mod(numpy_list1 + val, numpy_list2) 
mod_values2 = np.remainder(numpy_list1 + val, numpy_list2)
mod_values3 = (numpy_list1 + val) % numpy_list2

这三个结果都是一样的。和的文档在这里。第三种方法是在评论中提出的。

当然,我将我的列表重命名为列表1,这是一个输入错误。你忘记了添加
val
,你实际上不需要使用
np.mod
,你可以只做
mod\u values=(numpy\u列表1+val)%numpy\u列表2
。对!我忘了。谢谢关于,使用
%
,很好。我不知道。我会检查一下并更新答案。谢谢
import numpy as np
numpy_list1 = np.array(list1)
numpy_list2 = np.array(list2)

mod_values1 = np.mod(numpy_list1 + val, numpy_list2) 
mod_values2 = np.remainder(numpy_list1 + val, numpy_list2)
mod_values3 = (numpy_list1 + val) % numpy_list2