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

Python 函数,该函数使用列表理解添加到列表中元组的第一个索引,python,list,tuples,Python,List,Tuples,我有一个函数,它接受一个元组列表和一个int。然后,int被添加到列表中每个元组的索引1中。使用列表理解。我怎样才能做到这一点?假设我在第一个索引中总是有一个int,并且tuple的大小是len=3 foo(lst, x): >>> ret = [('hello', 2, 5), ('world', 10, 2)] >>> foo(ret, 5) [('hello', 7, 5), ('world', 15, 2)] 您可以使用列表: ret = [('he

我有一个函数,它接受一个元组列表和一个int。然后,int被添加到列表中每个元组的索引1中。使用列表理解。我怎样才能做到这一点?假设我在第一个索引中总是有一个int,并且tuple的大小是len=3

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

您可以使用列表:

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://code>获取元组的其余部分。请注意,不能更改元组元素的值,因为元组是不可变的

更新

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

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

您可以使用列表:

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://code>获取元组的其余部分。请注意,不能更改元组元素的值,因为元组是不可变的

更新

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

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

那么元组的长度可以是1?不,元组的长度总是3。所以元组的长度可以是1?不,元组的长度总是3。Sorryoh好的,那么e[:1]你是在取索引1的所有值,然后加上n吗?@Errick MichaelSantos添加了一个解释e[:1]得到索引1之前的所有值,不包括索引1的值。我明白了。谢谢,如果那样的话,如果我试图返回7和15的总和,我会怎么做?求和函数会在这里发挥作用吗?@Errick MichaelSantos是的,你可以这样做
sum(e[1]表示ret中的e)
。哦,好吧,那么e[:1]你是在索引1中取所有值,然后加上n吗?@Errick MichaelSantos补充了一个解释,e[:1]得到索引1之前的所有值,不包括索引1中的值。我明白了。谢谢,如果那样的话,如果我试图返回7和15的总和,我会怎么做?sum函数会在这里发挥作用吗?@Errick MichaelSantos是的,你可以这样做
sum(e[1]代表ret中的e)