【问题标题】:Iterate Through List of Tuples and Add Value to Specific Tuples遍历元组列表并为特定元组添加值
【发布时间】:2022-01-12 20:20:30
【问题描述】:

我有一个元组列表,想要遍历所有 TestTups 的值 a 和 b 并为每个值添加一个值。我不想对 TestFail 元组或运行值进行任何更改。

这是列表的摘录:

tup_list = [TestTup(a=6, b=4, run=3.0), TestTup(a=8, b=4, run=2.7), TestTup(a=1, b=4, run=3), TestTup(a=8, b=9, run=4), TestFail(a=1, b=4, run=1)]

这是想要的结果:

new_tup_list = [TestTup(a=11, b=5, run=3.0), TestTup(a=13, b=9, run=2.7), TestTup(a=6, b=10, run=3), TestTup(a=13, b=14, run=4), TestFail(a=1, b=4, run=1)]

就执行时间而言,最快的方法是什么?

【问题讨论】:

  • 什么是TestTup和TestFail?

标签: python python-3.7


【解决方案1】:

通过迭代旧列表来创建一个新列表:

>>> from typing import NamedTuple
>>> class TestTup(NamedTuple):
...     a: int
...     b: int
...     run: int
...
>>> class TestFail(NamedTuple):
...     a: int
...     b: int
...     run: int
...
>>> tup_list = [TestTup(a=6, b=4, run=3.0), TestTup(a=8, b=4, run=2.7), TestTup(a=1, b=4, run=3), TestTup(a=8, b=9, run=4), TestFail(a=1, b=4, run=1)]
>>> [TestTup(t.a+5, t.b+5, t.run) if isinstance(t, TestTup) else t for t in tup_list]
[TestTup(a=11, b=9, run=3.0), TestTup(a=13, b=9, run=2.7), TestTup(a=6, b=9, run=3), TestTup(a=13, b=14, run=4), TestFail(a=1, b=4, run=1)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    相关资源
    最近更新 更多