【问题标题】:List comprehension combine 2 elements in nested list列表理解结合嵌套列表中的 2 个元素
【发布时间】:2021-02-11 01:39:32
【问题描述】:

是否可以使用列表推导根据字符的出现来组合嵌套列表中的 2 个元素,例如:如果遇到 '+' 与下一个元素组合?我有一些使用嵌套循环执行此操作的代码,但尝试使用列表理解来实现。

输入: l = [['A-2', 'A-3', 'A-4', '+', '100', 'A-5'],['B-2', 'B-3', 'B-4', '+', '500', 'B-5']]

输出: l = [['A-2', 'A-3', 'A-4', '+100', 'A-5'],['B-2', 'B-3', 'B-4', '+500', 'B-5']]

代码:

for nested in l: 
   z = iter(nested)
   for i in z:
      if i == '+':
         i = i+next(z)

【问题讨论】:

  • 没有'+','100'变成'+100'
  • 知道了。很抱歉。
  • SO post 用于嵌套列表理解
  • @will.cass.wrig 但远非重复。这更复杂,结合一些元素并保持原样。
  • @schwobaseggl 同意,只是想将其作为解决方案其他变体的参考。你的解决方案很好,这就是我赞成它的原因。

标签: python list loops list-comprehension nested-lists


【解决方案1】:

以下将起作用:

[[x + next(i) if x == "+" else x for x in i] for i in map(iter, l)]

# [['A-2', 'A-3', 'A-4', '+100', 'A-5'], ['B-2', 'B-3', 'B-4', '+500', 'B-5']]

如果最后一个元素可能是"+",您可以将默认值传递给next

next(i, "")

为了避免错误。

【讨论】:

  • OP 可能不需要它,但你可以使用next(i, ''),以防最后一个元素是“+”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多