将元组和列表组合到列表列表中

时间:2017-03-05 09:36:23

标签: python list python-3.x nested-lists

我非常擅长编程并尝试将列表和元组组合到一个新列表中:

  • 商品是商品元组。
  • 每种商品都有相应的价格,随机生成并保存在列表中价格
  • 我想要一个名为 offer 的列表,为商品
  • 中的每种商品分配相应的价格值

我非常感谢一个简单的解决方案,并简要解释为什么我的尝试只返回布料的值(我输入范围0:5但似乎只是返回元素4,布料及其价格)

import random

goods = ("Silk", "Gems", "Wool", "Hide", "Cloth", "Iron")

def set_prices ():

    price_s = random.randrange(180,300)
    price_g = random.randrange(250,800)
    price_w = random.randrange(1,5)
    price_h = random.randrange(5,18)
    price_c = random.randrange(20,50)
    price_i = random.randrange(50,150)

    prices = [price_s,price_g,price_w,price_h,price_c,price_i]

    for n in range (0,5):
        offer = [(goods[n],prices[n])] 
        print (offer)

set_prices() 

1 个答案:

答案 0 :(得分:2)

问题在于range(0,5)只会生成0,1,2,3,4,因为5被排除在外。一个简单的解决方案是使用range(len(goods))来生成具有相同数量的商品的范围:

for n in range(len(goods)):
    ...

或者,您可以使用zip同时迭代这两个列表:

for offer in zip(goods,prices):
    print(offer)

这会将输出生成为元组:

('Silk', 276)
('Gems', 486)
...

但可以转换为list(offer)的列表:

['Silk', 188]
['Gems', 620]
['Wool', 2]
['Hide', 14]
['Cloth', 38]
['Iron', 130]