使用列表理解将函数添加到列表中元组的第一个索引的函数

时间:2018-10-28 23:10:58

标签: python list tuples

我有一个接受元组和int列表的函数。然后将int与列表中每个元组的索引1相加。使用列表理解。我该如何实现?假设我总是在第一个索引中有一个int并且元组的大小为len = 3

foo(lst, x):
>>> ret = [('hello', 2, 5), ('world', 10, 2)]
>>> foo(ret, 5)
[('hello', 7, 5), ('world', 15, 2)]

1 个答案:

答案 0 :(得分:4)

您可以使用列表理解:

ret = [('hello', 2, 5), ('world', 10, 2)]


def foo(r, n):
    return [e[:1] + (e[1] + n,) + e[2:] for e in r]


print(foo(ret, 5))

输出

[('hello', 7, 5), ('world', 15, 2)]

说明

基本部分是如何创建新的元组,因此e[:1]获取索引1之前的所有内容(作为元组),然后表达式(e[1] + n,)创建一个具有新值的元素1的元组,并使用e[2:]获取其余的元组。注意,您不能更改元组元素的值,因为元组是不可变的。

更新

如果元组的长度始终为三,则还可以执行以下操作:

def foo(r, n):
    return [(a, n + b, c) for a, b, c in r]