鱼C论坛

 找回密码
 立即注册
查看: 1609|回复: 8

[已解决]问一个小白问题

[复制链接]
发表于 2017-9-7 20:49:34 | 显示全部楼层 |阅读模式

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

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

x
        我有一个列表1,和列表2,怎么用Python实现以列表2的项的数字,作为列表1的项的项数,达到复制的目的。想要的结果就是列表3.
最佳答案
2017-9-7 21:51:30
  1. list1 = [1, 1, 2, 1]
  2. list2 = [2743.2, 2743.2, 2743.2, 2900]
  3. list3 = []
  4. for i in range(len(list1)):
  5.     if list1[i] == 1:
  6.         list3.append(list2[i])
  7.     else:
  8.         list3.append([list2[i]] * list1[i])
复制代码

列表2

列表2
9GP~%IT}(R@3KDLK[${)D.png

列表1

列表1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-9-7 20:50:49 | 显示全部楼层
第二张图是列表3,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-7 21:08:21 | 显示全部楼层
是不是这个意思。
  1. list2 = [2743.2, 2743.3, [2743.2, 2743.2], 2900]
  2. list3 = [i[0] if isinstance(i, list) else i for i in list2 ]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-7 21:43:42 | 显示全部楼层
冬雪雪冬 发表于 2017-9-7 21:08
是不是这个意思。

不好意思啊,我这图顺序放的不好。第二张图是我想要得到的最终效果。就是您写的代码里的list2。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-7 21:48:33 | 显示全部楼层
本帖最后由 bush牛 于 2017-9-7 21:49 编辑
  1. a = [2,1,3,4]
  2. b = [2743.2, 2743.3, 2743.2, 2900]
  3. c = []

  4. for i, j in zip(a,b):
  5.     if i == 1:
  6.         c.append(j)
  7.     else:
  8.         c.append([j] * i)
  9. print(c)
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-7 21:51:30 | 显示全部楼层    本楼为最佳答案   
  1. list1 = [1, 1, 2, 1]
  2. list2 = [2743.2, 2743.2, 2743.2, 2900]
  3. list3 = []
  4. for i in range(len(list1)):
  5.     if list1[i] == 1:
  6.         list3.append(list2[i])
  7.     else:
  8.         list3.append([list2[i]] * list1[i])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-7 22:28:42 | 显示全部楼层

好像不对诶,list3.append([list2[i]] * list1[i]),这行代码把变成数字相乘了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-7 22:31:48 | 显示全部楼层

我好像有思路了,写个while循环好了,谢谢帮忙
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-7 22:35:19 | 显示全部楼层
汨罗江 发表于 2017-9-7 22:28
好像不对诶,list3.append(] * list1),这行代码把变成数字相乘了

举个例子:
>>> [12] * 3
[12, 12, 12]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-2 05:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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