遇到一个需求,需要对两个长度不一定相等的列表进行交叉合并。像拉拉链一样(两边的拉链不一定相等)。

如:

  a = [1, 3, 5]

  b = [2, 4, 6, 8]

需将a, b 合并为 c

  c = [1, 2, 3, 4, 6, 8]

网上又看到定义函数,或者使用 zip,自己觉得不太理想,就想倒腾下,当然有可能下述方法已经有人想到了。

方法一:  写 for 循环

  a = [1, 3, 5]

  b = [2, 4, 6, 8]

  c = [ ]

  for i in range( max ( len( a ), len( b ) ) ):

    if a:

      c.append( a.pop() )

    if b:

      c.append( b.pop() )

方法二: 列表表达式(超级长,试了很久才搞出来)

  a = [1, 3, 5]

  b = [2, 4, 6, 8]

  a.reverse()

  b.reverse()

  c = [ ( lambda i: a.pop() if ( a! = [ ]  and ( i % 2 ==0 or b==[ ] )) else b.pop() )( i ) for i in range( len( a ) + len( b ) )]  

                                                                                                            -- by Clay

Python list 两个不等长列表交叉合并的更多相关文章

  1. [nowCoder] 两个不等长数组求第K大数

    给定两个有序数组arr1和arr2,在给定一个整数k,返回两个数组的所有数中第K小的数.例如:arr1 = {1,2,3,4,5};arr2 = {3,4,5};K = 1;因为1为所有数中最小的,所 ...

  2. 就是一段程序,可以求出N个不等长列表中取N个元素形成的所有组合

    def get_result_in_vector(vector, N, tmp, tmp_result): """ :param vector:所有组合的拼接 :para ...

  3. Python 中两个字典(dict)合并

    dict1 = { "name":"owen", "age": 18 } dict2 = { "birthday": & ...

  4. c语言实现两个单链表的交叉合并

    #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; struc ...

  5. Python入门笔记——(2)列表和元组

    一.序列 python包含6种内建的序列:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.序列中每个元素被分配一个序号即索引,第一个索引为0,第二个为1,以此类推.也可以 ...

  6. 第五篇:python基础之循环结构以及列表

    python基础之循环结构以及列表   python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.pyth ...

  7. Python基础 数据类型 (字符串、列表、字典、元组、集合、堆、栈、树)

    数据类型有整型.布尔.字符串.列表.字典.元组.集合.堆.栈和树. 1.整型: 整型就是数字 数字表示 python2 64位机器,范围-2^63~2^63-1 超出上述范围,python自动转化为l ...

  8. Python语法速查: 2. 列表、元组、字典、集合操作

    返回目录 (1)通用序列操作 “序列”表示索引为非负整数的有序对象集合,列表.元组.字符串都属于序列.区别在于:列表是可变的,而元组和字符串是不可变的.序列的通用操作他们都可以用. 操作或方法 简述 ...

  9. UIWrapContent(NGUI长列表优化利器)

    NGUI长列表优化利器 优化原理 NGUI3.7.x以上版本 有个新组件 UIWrapContent ,当我们的列表内容很多时,可以进行优化.它不是一次生成全部的child,而是只有固定数量的chil ...

随机推荐

  1. Android初级教程理论知识(第七章服务)

    服务两种启动方式 startService:服务被启动之后,跟启动它的组件没有一毛钱关系 bindService:跟启动它的组件同生共死 绑定服务和解绑服务的生命周期方法:onCreate->o ...

  2. Cocos2D iOS之旅:如何写一个敲地鼠游戏(九):创建动画

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  3. 【Unity Shaders】Lighting Models —— 光照模型之Lit Sphere

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  4. iOS中 快速正确的安装 CocoaPods

    有问题或技术交流可以咨询!欢迎加入! 第一部分: CocoaPods 的安装 步骤1 - 安装 RVM RVM 是干什么的这里就不解释了,后面你将会慢慢搞明白. $ curl -L https://g ...

  5. Android的加速度传感器模拟摇一摇的效果-android学习之旅(66)

    主要介绍一下android的加速传感器的简单用法,模拟摇一摇 ,如果x,y,z三个方向的加速度超过了15,就会弹出Toast,当然你可以设置更复杂的策略,比如判断间隔 代码如下 public clas ...

  6. JAVA之旅(十九)——ListIterator列表迭代器,List的三个子类对象,Vector的枚举,LinkedList,ArrayList和LinkedList的小练习

    JAVA之旅(十九)--ListIterator列表迭代器,List的三个子类对象,Vector的枚举,LinkedList,ArrayList和LinkedList的小练习 关于数据结构,所讲的知识 ...

  7. Spring - IOC简介

    DI(Dependence Injection)依赖注入: userService依赖于容器注入的 这样拿的 这个过程由容器来控制,这个称为依赖注入. IOC(Inverse of control)控 ...

  8. libcoro:在c++中支持coroutine

    起因 在第一个版本的libtnet开发完成之后,我一直在思考如何让异步方式的网络编程更加简单. 虽然libtnet通过c++ shared_ptr以及function等技术很大程度上面解决了异步代码编 ...

  9. mongoDB常见的查询索引(三)

    1. _id索引     _id索引是绝大多数集合默认建立的索引     对于每个插入的数据,MongoDB会自动生成一条唯一的_id字段. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  10. Css详解之(伪类选择器)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...