以mod x_i的数量递增python列表,其中x_i取决于位置
我有两张长度相等的单子。 我将列表1增加一个数量,但每个条目都必须由列表2中相应的条目修改 我正在做的是:以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] =
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