我有两个清单:
frame = ["mercury", "noir", "silver", "white" ]
seat_colors = [
"coconut white", "yello", "black", "green", "cappuccino",
"orange", "chrome", "noir", "purple", "pink", "red",
"matte", "gray", "bermuda blue"
]
我正在尝试将它们合并为一个列表,其中每个框架都与每种座椅颜色唯一匹配。
我想这样使用zip()
:
In [3]: zip(frame, colors)
Out[3]:
[('mercury', 'coconut white'),
('noir', 'yello'),
('silver', 'black'),
('white', 'green')]
但是它会缩短到最小列表的长度。
我知道我可以使用以下方法遍历列表:
In [5]:
for f in frame:
for c in colors:
print "%s, %s" %(f, c)
Out [5]:
mercury, coconut white
mercury, yello
mercury, black
mercury, green
mercury, cappuccino
mercury, orange
mercury, chrome
mercury, noir
mercury, purple
mercury, pink
mercury, red
mercury, matte
mercury, gray
mercury, bermuda blue
noir, coconut white
noir, yello
noir, black
noir, green
....
但我希望它变得更聪明,并使用python内置函数的功能。
使用itertools.izip_longest()
保持荏苒,直到
最长 序列已经用完。
这使用默认值(默认为None
)代替较短列表的缺失值。
但是,您的输出正在创建两个列表的 乘积
。使用itertools.product()
为:
from itertools import product
for a_frame, color in product(frame, seat_colors):
print '{}, {}'.format(a_frame, color)
这两个概念是完全不同的。该izip_longest()
方法将生产len(seat_colors)
物料,而产品将生产len(seat_colors) * len(frame)
物料。
问题内容: 我有两个列表,每个列表具有相等数量的项目。这两个列表如下所示: 我正在寻找一个看起来像这样的清单: 我试图使用这样的东西: 合并两个列表列表的最佳方法是什么?提前致谢。 问题答案:
问题内容: 使用Google Guava(Google Commons),是否可以将两个大小相等的列表合并为一个列表,而新列表包含两个输入列表的复合对象? 例: 和 将输出: 问题答案: 从Guava 21开始,可以通过以下方式实现:
我有一个人的HashSet。一个人有一个名字,最后一个名字和年龄,比如:人(“汉斯”,“男人”,36) 我的任务是得到一份17岁以上的人的名单,按年龄对他们进行排序,并用姓氏来表示他们的名字,如:[“Hans Man”,“另一个名字”,“另一个名字”] 我只允许导入: 我的想法是先对它们进行排序,将名称映射到不同的流中,然后对它们进行压缩,但这不起作用。 提前谢谢你
问题内容: 我有两个清单 我想将这两个列表合并(压缩)到一个列表中,这样 Python的标准库中是否有任何函数可以做到这一点? 问题答案: 通常,您使用以下方法: 但是用s(或您作为参数传递的任何值)填充较短的可迭代项。如果这不是您想要的,则可以使用一种理解来过滤s: 但是请注意,如果两个可迭代对象都具有值,则也会将其过滤掉。如果您不想这样做,请定义自己的对象并过滤该对象,而不是: 在Python
问题内容: 我认为“解压”可能是错误的词汇-抱歉,我确定这是一个重复的问题。 我的问题很简单:在一个需要项目列表的函数中,如何在不出错的情况下传递Python列表项目? 当然,必须有一种方法来扩展列表,并在蹄上传递函数吗? 问题答案: