鱼C论坛

 找回密码
 立即注册
查看: 1447|回复: 3

多个列表从中循环取数

[复制链接]
发表于 2018-3-22 16:30:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lovesword 于 2018-3-22 16:32 编辑

例如 有a,b,c 3个列表,以及指定的要取数的个数n,依次从a,b,c三个列表取元素,凑足n个数 例如:

  1. n=3
  2. a=[1,2,3,4,5,6]
  3. b=[7,8,9]
  4. c=[10]

  5. ----希望得到----
  6. n=3  ===> [1,7,10]
  7. n=4  ===> [1,7,10,2]
  8. n=5  ===> [1,7,10,2,8]
  9. n=6  ===> [1,7,10,2,8,3]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-22 17:30:28 | 显示全部楼层
帮你写了个,不知道有没有更好的方法。

  1. def fun(a, b, c, n):
  2.     new = []
  3.     for i in range(max([len(a), len(b), len(c)])):
  4.         try:
  5.             new.append(a[i])
  6.         except IndexError:
  7.             pass
  8.         try:
  9.             new.append(b[i])
  10.         except IndexError:
  11.             pass
  12.         try:
  13.             new.append(c[i])
  14.         except IndexError:
  15.             pass         
  16.     return new[:n]
  17.                        
  18.    
  19. n=5
  20. a=[1, 2, 3, 4, 5, 6]
  21. b=[7, 8, 9]
  22. c=[10]
  23. print(fun(a, b, c, n))      
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-22 17:44:50 | 显示全部楼层
本帖最后由 colinshi 于 2018-3-22 17:56 编辑
  1. def xxx(n,*args):
  2.     tmp = []
  3.     count = n
  4.     while count:
  5.         for i in range(len(args)):
  6.             if args[i]:
  7.                 tmp.append(args[i].pop(0))
  8.         count -= 1
  9.         if len(tmp) >= n:
  10.             break
  11.     return tmp[:n]
  12. if __name__ == '__main__':
  13.     ab=xxx(n,a,b,c)
  14.     print(ab)
复制代码
看一下结果吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-22 18:28:02 | 显示全部楼层
也写一个:
  1. a=[1,2,3,4,5,6]
  2. b=[7,8,9]
  3. c=[10]

  4. def fun(n, *args):
  5.     import copy
  6.     list1 = copy.deepcopy(args)
  7.     newlist = []
  8.     while len(newlist) < n:
  9.         for i in range(len(list1)):
  10.             if list1[i]:
  11.                 newlist.append(list1[i].pop(0))
  12.                 if len(newlist) >= n:
  13.                     break
  14.     return newlist
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-28 18:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表