python中合并列表_关于python:如何将两个列表合并到一个列表中?
我有
a = [1, 2]
b = ['a', 'b']
我想要
c = [1, 'a', 2, 'b']
号
@cdleary's answer stackoverflow.com/questions/406121/…为"在python中扁平化一个浅列表"的各种方法提供性能比较(扁平化zip(a,b)为您提供了答案)。
[j for i in zip(a,b) for j in i]
。
它是有效的,但我不能在头脑中分析它…
[J代表J代表I,I代表I代表Zip(A,B)]尽管在我的头脑中更容易解析并不管用!
一开始读起来确实很奇怪:(1)精神上切掉第一个for的所有东西,把它移到最后,然后读到:for i in zip(a, b)、for j in i、j。
啊……整洁!谢谢。
整洁,但如果一个列表比另一个短1个元素(仍然应该能够合并),则不起作用。
为什么不对列表使用串联:result=a+b。这也是你能读到的!
@拉尔夫,这取决于您的订购要求。
@约翰洛伊,没错。没有提到顺序和重复;)如果顺序起作用,那么我会说,用mark的itertool链这个例子是很好的。顺便说一句,通过set()可以避免重复。
如果元素的顺序与示例中的顺序非常匹配,则可以使用zip和chain的组合:
from itertools import chain
c = list(chain(*zip(a,b)))
如果您不关心结果中元素的顺序,那么有一种更简单的方法:
c = a + b
号
在我的例子中使用这个:"c=a+b"->列表是不可重复的。那么呢?只有Chain可以检查我的问题以了解我的问题:"stackoverflow.com/questions/40952892/…"
对于索引,datas.iterrows()中的行:textf=re.findall('f(.*?)}}",row['review'])matrixf+=textf如果index==3:break for index in matrixf:print index,它仍然有效,所以我认为它仍然是不可更改的?"。
有一条链,来自于"Iterable:EDOCX1"(0),这是一种非常懒惰的方式。
正在分析
[j for i in zip(a,b) for j in i]
。
如果你记得for和if条款是按顺序完成的,然后是结果的最后一个附加,那么在你的头脑中就足够容易了:
temp = []
for i in zip(a, b):
for j in i:
temp.append(j)
。
如果它是用更有意义的变量名来写的话会更容易些:
[item for pair in zip(a, b) for item in pair]
。
我通常对Les很满意,但是这个双循环让我很困惑。谢谢你的解释。
另一种方法是使用索引切片,结果发现它比Zip更快,扩展性更好:
def slicezip(a, b):
result = [0]*(len(a)+len(b))
result[::2] = a
result[1::2] = b
return result
您会注意到,这只在len(a) == len(b)的情况下有效,但是使用模拟zip的条件不能用a或b进行缩放。
进行比较:
a = range(100)
b = range(100)
%timeit [j for i in zip(a,b) for j in i]
100000 loops, best of 3: 15.4 μs per loop
%timeit list(chain(*zip(a,b)))
100000 loops, best of 3: 11.9 μs per loop
%timeit slicezip(a,b)
100000 loops, best of 3: 2.76 μs per loop
。
您所说的"将条件模拟为zip,而不是使用a或b进行缩放"是什么意思?
我的意思是,使用zip,如果一个列表比另一个长,那么较长的列表会被截断,以便与较短的列表合并。我们可以通过比较每个数组的长度,然后只分配较长数组的缩短版本来实现这一点。如果数组变大,那么对长度和截断的检查就不再需要花费时间了。
注:这对于有利于第一个列表的平分目的很有效:它允许长度相同或比第二个slicezip([1,2,3],[4,5])长一个,这意味着在这种情况下,您不必处理不均匀的列表(这非常好)。
如果您关心订单:
#import operator
import itertools
a = [1,2]
b = ['a','b']
#c = list(reduce(operator.add,zip(a,b))) # slow.
c = list(itertools.chain.from_iterable(zip(a,b))) # better.
print c给[1, 'a', 2, 'b']。
-1表示二次时间。你可以在线性时间内做到这一点。
@阿龙·加拉赫修好了,但还是有一个(巧妙地)独特的答案。
这里有一个标准/自我解释的解决方案,我希望有人会发现它有用:
a = ['a', 'b', 'c']
b = ['1', '2', '3']
c = []
for x, y in zip(a, b):
c.append(x)
c.append(y)
print (c)
号
输出:
['a', '1', 'b', '2', 'c', '3']
号
当然,如果需要,您可以更改它并对值进行操作。
def main():
drinks = ["Johnnie Walker","Jose Cuervo","Jim Beam","Jack Daniels,"]
booze = [1, 2, 3, 4, 5]
num_drinks = []
x = 0
for i in booze:
if x < len(drinks):
num_drinks.append(drinks[x])
num_drinks.append(booze[x])
x += 1
else:
print(num_drinks)
return
主体()
请你解释一下你的答案。
5轮后你有没有想出这个答案?
c = []
c.extend(a)
c.extend(b)
。
期望的结果完全不同。
虽然这段代码可以回答这个问题,但是提供关于如何和/或为什么解决这个问题的额外上下文将提高答案的长期价值。
如果它回答了问题,并且与所有其他答案不同,为什么不支持它呢?我相信这个问题没有太多的背景,所以任何相关的答案都是受欢迎的。
python中合并列表_关于python:如何将两个列表合并到一个列表中?相关推荐
- python tkinter计算器实例_使用Python自带GUI tkinter编写一个期权价格计算器
0 准备工作 首先,确认环境中有numpy.scipy.stats和tkinter三个功能包.前两个功能包可用于Python的数学计算,比如使用numpy来生成随机数用于Monte Carlo模拟,以 ...
- python 布莱克舒尔斯_使用Python自带GUI tkinter编写一个期权价格计算器
0 准备工作 首先,确认环境中有numpy.scipy.stats和tkinter三个功能包.前两个功能包可用于Python的数学计算,比如使用numpy来生成随机数用于Monte Carlo模拟,以 ...
- python什么是数据结构_〖Python〗-- 数据结构
[数据结构] 什么是数据结构? 定义:简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中.比如:列表.集合与字典等都是一种数据结构. PS:"程序=数据结构+算法" 列表 ...
- python第k序元素查找列表_【Python】第8次练习:列表——程序填空题 -合并队列、列表元素零的移动、列表逆序输出、第K序元素查找...
[Python]第8次练习:列表--程序填空题 -合并队列.列表元素"零"的移动.列表逆序输出.第K序元素查找 1.程序填空题 -合并队列 题目:某班男女两队同学各若干人,男生已按 ...
- python生成多个随机数列表_在python中生成1到6之间的6个随机数的列表
使用 list comprehension: import random def startTheGame(): mylist=[random.randint(1, 6) for _ in range ...
- python如何创建一个列表_在python中创建列表的最佳和/或最快方法
在python中,据我所知,至少有3到4种方法来创建和初始化给定大小的列表: 简单循环append: my_list =[]fori inrange(50):my_list.append(0) 简单循 ...
- python 判断数字连续_关于python:检测列表中的连续整数
本问题已经有最佳答案,请猛点这里访问. 我有一个包含这样的数据的列表: [1, 2, 3, 4, 7, 8, 10, 11, 12, 13, 14] 我想打印出连续整数的范围: 1-4, 7-8, 1 ...
- python如何创建一个列表_使用python中的format()创建一个列表(make a list using format() in python)...
使用python中的format()创建一个列表(make a list using format() in python) 我是python和编码的新手. 因此,如果已经讨论过这件事,我很抱歉,我无 ...
- python 获取唯一值_从Python列表中获取唯一值
python 获取唯一值 In this article, we will be understanding 3 ways to get unique values from a Python lis ...
最新文章
- addroutes刷新_vue 解决addRoutes动态添加路由后刷新失效问题
- Cracking The Coding Interview5.2
- java解析xml生成表格_JAVA读取XML文件并解析 以及 JAVA生成文本文件输出
- Exynos4412 Uboot 移植(一)—— Uboot 编译流程分析
- win7/8/10安装过程中将动态磁盘转为basic
- 雅克德罗机器人_什么腕表配饰值得买 带货明星们都已经帮你选好了
- 现在自驾旅游吃住有没有问题?
- Python 玩出花了!一文教你用 Python 制作吃豆人游戏! | 附代码
- BM求线性递推模板(杜教版)
- python3.7帮助文档,文档说明 · Python3.7.3官方文档 简体中文 · 看云
- linux下软件安装的四种方法
- 树莓派CM4 装系统和换源
- U盘安装Fedora 24时出现的几个问题及解决办法
- 用Python中的py2neo库操作neo4j,搭建简单关联图谱—基于家有儿女中的人物关系
- 记录一次docker基础操作错误Error response from daemon: You cannot remove a running container
- 移动智能终端可信环境分析
- UnicodeDecodeError: 'gbk' codec can't decode byte 0x91 in position 8: illegal multibyte sequence
- Chrome Custom Tabs最佳实践
- 2021届 联发科技视频一面 嵌入式软件
- 网易严选上半年开设线下店?说好不学无印良品的
热门文章
- 报错, nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException
- 报错,npm ERR! code ENOLOCAL
- 浅谈数学中的化归原则
- Java讲课笔记17:Lambda表达式
- 【BZOJ1026】windy数,数位DP
- 重启服务器导致网站系统错误,win10怎么总是莫名其妙重启?_网站服务器运行维护...
- bzoj4819 [Sdoi2017]新生舞会 分数规划(实数二分)+网络流检验
- 【英语学习】【WOTD】animadversion 释义/词源/示例
- 微服务开发过程中需要注意的若干事项
- [转]CentOS6.4下Mysql数据库的安装与配置