【问题标题】:convert list of lists to a list of smaller tuples [duplicate]将列表列表转换为较小元组的列表[重复]
【发布时间】:2022-01-24 08:11:26
【问题描述】:

在将大小相等的列表 x 转换为元组列表时,我需要一些帮助,以便每个元组的长度应为 x 的长度

x = [
['4', '8', '16', '32', '64', '128', '256', '512', '1,024'], 
['1,200', '2,400', '4,800', '4,800', '6,200', '6,200', '6,200', '6,200', '6,200'], 
['300', '600', '1,200', '2,400', '3,200', '3,200', '4,000', '4,000', '4,000']
]
# some functions that converts it to 
expected_output = [('4', '1,200', '300'), ('8', '2,400', '600'), ...]

在这种情况下,len(x) 是 3,但我想要一个可以处理任意长度 x 的函数

【问题讨论】:

  • 如果您希望 len 为 3 但遇到长度为 7 的子列表(即不能均分)该怎么办?
  • @Daweo x 内的列表总是等长的,所以如果len(x) 是 7 元组大小将是 7

标签: python


【解决方案1】:

zip与解包运算符*一起使用:

out = list(zip(*x))

输出:

[('4', '1,200', '300'),
 ('8', '2,400', '600'),
 ('16', '4,800', '1,200'),
 ('32', '4,800', '2,400'),
 ('64', '6,200', '3,200'),
 ('128', '6,200', '3,200'),
 ('256', '6,200', '4,000'),
 ('512', '6,200', '4,000'),
 ('1,024', '6,200', '4,000')]

【讨论】:

  • 完美运行,请问 *x 究竟是做什么的,什么时候有用?
  • @User19 x 是一个列表列表,* 允许我们将它们解压缩为 len(x) 单独的列表。
【解决方案2】:

这个解决方案怎么样:

list(zip(*x))

【讨论】:

  • 你能让它动态吗?这仅在 x 的长度为 3 时才有效
猜你喜欢
  • 2017-03-24
  • 1970-01-01
  • 2017-09-10
  • 2018-02-08
  • 1970-01-01
  • 2018-12-19
  • 2012-06-05
  • 1970-01-01
  • 2022-09-27
相关资源
最近更新 更多