当前位置: 首页 > 面试题库 >

Python-按元素添加2个列表?

景嘉志
2023-03-14
问题内容

我现在有了:

list1 = [1, 2, 3]
list2 = [4, 5, 6]

我希望有:

[1, 2, 3]
 +  +  +
[4, 5, 6]
|| || ||
[5, 7, 9]

只是两个列表的元素加法。

我当然可以迭代两个列表,但是我不想这样做。

什么是最Python的方式这样做的?


问题答案:

使用map有operator.add

>>> from operator import add
>>> list( map(add, list1, list2) )
[5, 7, 9]

或zip具有列表理解:

>>> [sum(x) for x in zip(list1, list2)]
[5, 7, 9]

时序比较:

>>> list2 = [4, 5, 6]*10**5
>>> list1 = [1, 2, 3]*10**5
>>> %timeit from operator import add;map(add, list1, list2)
10 loops, best of 3: 44.6 ms per loop
>>> %timeit from itertools import izip; [a + b for a, b in izip(list1, list2)]
10 loops, best of 3: 71 ms per loop
>>> %timeit [a + b for a, b in zip(list1, list2)]
10 loops, best of 3: 112 ms per loop
>>> %timeit from itertools import izip;[sum(x) for x in izip(list1, list2)]
1 loops, best of 3: 139 ms per loop
>>> %timeit [sum(x) for x in zip(list1, list2)]
1 loops, best of 3: 177 ms per loop


 类似资料:
  • 主要内容:Python append()方法添加元素,Python extend()方法添加元素,Python insert()方法插入元素实际开发中,经常需要对 Python 列表进行更新,包括向列表中添加元素、修改表中元素以及删除元素。本节先来学习如何向列表中添加元素。 《 Python序列》一节告诉我们,使用 运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用 进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。 请看下面的演示: 运行结果: language = ['P

  • 问题:如何将列表拆分为两个子列表,其中元素由元素中的选项卡分隔? 上下文:我想读取一个由制表符分隔的文件到Pandas DataFrame中。这些文件看起来像: 列1\t 123 列2\t 列3\t文本 这意味着每行有一列,后面跟着一个选项卡,然后是该列的一个值(有时没有值)。 我的想法是读取文件并将每行保存为列表的元素,然后将列表分成两个,将选项卡前的第一部分作为一个列表,选项卡后的第二部分作为

  • 问题内容: 我知道在迭代列表时不允许删除元素,但是在迭代时允许将元素添加到python列表中。这是一个例子: 我已经在我的代码中尝试过了,它似乎可以正常工作,但是我不知道是否是因为我很幸运,将来它会折断吗? 编辑:我不愿复制列表,因为“ myarr”很大,因此会太慢。另外,我需要使用“ somecond()”检查附加对象。 编辑:在某些时候“ somecond(a)”将为假,因此不能有无限循环。

  • lpush key string 在key对应list的头部添加字符串元素,返回1表示成功,0表示key存在且不是list类型。注意:江湖规矩一般从左端Push,右端Pop,即LPush/RPop。 lpushx 也是将一个或者多个value插入到key列表的表头,但是如果key不存在,那么就什么都不在,返回一个false【rpushx也是同样】 rpush key string 同上,在尾部添加

  • 问题内容: 这是一个非常简单的程序: 这是我期望的输出: 但是我得到了这个: 真的有我不来的东西! 问题答案: 你必须做 不 现在可以正常工作: 当您执行类似操作时,您会在一个列表中三次获得相同的列表。 相同的 意思是,当您更改其中之一时,您也会更改所有它们(因为只有一个列表被引用了3次)。 您需要创建三个独立的列表来解决此问题。您可以通过列表理解来做到这一点。您在此处构造一个由独立的空列表组成的

  • 我正在尝试使用时循环将元素添加到双向链表中。节点正在制作中,但它们都存储相同的单词,这是我正在阅读的文件的最后一个单词。这是我的时循环: 在while循环开始之前,光标被初始化为列表的开头。 这是我的节点结构: 我的时循环出了什么问题?为什么它总是覆盖以前的节点?请并谢谢你!