python列表元素条件增量

2024-04-30 05:45:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经搜索了一段时间了,基本上,我试图有条件地增加一个元素列表的另一个列表,元素方面。。。在

我的代码如下所示,但是有更好的方法吗?列表理解,地图??在

我认为像~+=fromhttp://www.python.org/dev/peps/pep-0225/这样的元素操作非常好,但是为什么要推迟呢?在

for i in range(1,len(s)):
        if s[i]<s[0]:
            s[i]+=p[i]

根据你们的一些好的反馈,我重新编码如下

^{pr2}$

s,p都是数组。在

对于我的一个代码,p.s仍然比matlab慢5倍。在


Tags: 方法代码inorgdev元素列表for
3条回答

如果不想创建新数组,则可以选择:

  1. 您的建议(尽管根据python版本,您可能希望使用xrange)
  2. 对s和p使用Numpy数组。如果s和p的长度相同,则可以执行类似s[s<s[0]] += p[s<s[0]]的操作。在
  3. 用Cython加速你的提议。在

下面是一个快速版本:

# sample data
s = [10, 5, 20]
p = [2,2,2]

# As a one-liner.  (You could factor out the lambda)
s = map(lambda (si, pi): si + pi if si < s[0] else si, zip(s,p))

# s is now [10, 7, 20]

这假设len(s) <= len(p)

希望这能有所帮助。告诉我。祝你好运。:-)

检查这个SO问题:

基本上,类似于:

[sum(a) for a in zip(*[s, p]) if a[0] < 0]

示例:

^{pr2}$

为了澄清,zip的作用如下:

>>> zip(*[[1, 2, 3], [4, 5, 6]])
[(1, 4), (2, 5), (3, 6)]

它将两个(或更多)列表连接到一个元组列表中。您可以测试每个元组元素的条件。在

相关问题 更多 >