为了账号安全,请及时绑定邮箱和手机立即绑定

列表理解中的变量范围

列表理解中的变量范围

沧海一幻觉 2021-08-24 15:28:44
我有一个由字符串和另一个列表组成的元组列表;[('string1', ['a1', 'b1']), ('string2', ['a2', 'b2']), ('string3', ['a3', 'b3'])]我无法弄清楚使用列表理解来达到类似的目的;[['string1a1', 'string1b1'], ['string2a2', 'string2b2'], ['string3a3', 'string3b3']]我试过类似的东西results = [join(ministring, i) for i in (miniarray for (ministring, miniarray) in myarray)]但我对扩展/表达式(?)中的每个变量范围感到困惑。
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

就这么简单:


lst = [('string1', ['a1', 'b1']),

 ('string2', ['a2', 'b2']),

 ('string3', ['a3', 'b3'])]


res = [[master + tail for tail in sublist] for master, sublist in lst]

返回:


[['string1a1', 'string1b1'], ['string2a2', 'string2b2'], ['string3a3', 'string3b3']]

请注意,使用这种方法,元组内子列表的长度不是固定的。它可以任意长。


查看完整回答
反对 回复 2021-08-24
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

你可以这样做:


data = [('string1', ['a1', 'b1']),

 ('string2', ['a2', 'b2']),

 ('string3', ['a3', 'b3'])]


result = [[s + e1, s + e2] for s, [e1, e2] in data]

print(result)

输出


[['string1a1', 'string1b1'], ['string2a2', 'string2b2'], ['string3a3', 'string3b3']]

请注意,这假设内部列表只有两个元素。


查看完整回答
反对 回复 2021-08-24
?
白衣非少年

TA贡献1155条经验 获得超0个赞

试试这个:

new_list = list(map(lambda x: [x[0]+x[1][0], x[0]+x[1][1]],data))


查看完整回答
反对 回复 2021-08-24
  • 3 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信