在列表中的每个元素前面添加一个字符

时间:2016-02-01 00:40:21

标签: python list python-3.x math

我正在制作一个计算数字的计算器。目前,对于正数12,列表如下所示:
 [1,12,2,6,3,4,4,3,6,2,12,1]
 我想更改列表,所以它看起来像这样:
[-1,-12,-2,-6,-3,-4,-4,-3,-6,-2,-12,-1]
我怎么能做到这一点?

3 个答案:

答案 0 :(得分:1)

制作带有负值的复制列表,您可以使用列表理解:

factors = [1,2,3,4,6,12]
negatives = [-item for item in factors]

要将其添加到原始列表,请使用+=表示法:

factors += [-item for item in factors]

要使其他项目为负,您可以使用基本循环:

edited = []
for i in range(len(factors)):
    if i%2:#for odd indices
        edited.append(factors[i])
    else:
        edited.append(-factors[i])

这也可以用列表理解来压缩:

edited = [factors[i] if i%2 else -factors[i] for i in range(len(factors))]

答案 1 :(得分:0)

l = [1,12,2,6,3,4,4,3,6,2,12,1]

for x in l[:]: l.append(-x)

答案 2 :(得分:-1)

假设a是原始列表:

from itertools import chain, imap
from operator import neg

chain(a, imap(neg, a))

chain以懒惰的方式创建一个包含两个(或多个)链接在一起的列表(一个接一个)。 imapmap的懒惰版本。结果是一个生成器,它返回原始列表的元素,后跟否定列表的元素。

在处理大量数据时,惰性方法非常重要,例如: 2GB列表。接受的解决方案将创建第二个列表,其中包含负片,然后在连接两个列表时创建两倍大小的第三个列表。如果不需要遍历整个列表,这就变得更加明显。

发电机很棒。