我有一个接受元组和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)]
答案 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]