Python|用列表修改元组内容
在Python中,元组是不可变的,因此一旦它们形成就不需要对其进行更改。这种限制使它们的处理更加困难,因此对元组的某些操作非常有用。本文处理使用给定列表修改第二个元组元素。让我们讨论一些可以做到这一点的方法。
方法 #1:使用zip()
+ 列表理解
在这种方法中,我们只取元组列表的第一个元素和相应索引处的元素,并使用 zip函数将它们压缩在一起。
# Python3 code to demonstrate
# modifying tuple elements
# using zip() + list comprehension
# initializing lists
test_list1 = [('Geeks', 1), ('for', 2), ('Geeks', 3)]
test_list2 = [4, 5, 6]
# printing original lists
print("The original list 1 : " + str(test_list1))
print("The original list 2 : " + str(test_list2))
# using zip() + list comprehension
# modifying tuple elements
res = [(i[0], j) for i, j in zip(test_list1, test_list2)]
# print result
print("The modified resultant list of tuple : " + str(res))
输出 :
The original list 1 : [('Geeks', 1), ('for', 2), ('Geeks', 3)]
The original list 2 : [4, 5, 6]
The modified resultant list of tuple : [('Geeks', 4), ('for', 5), ('Geeks', 6)]
方法#2:使用zip() + map() + operator.itemgetter()
这里的 itemgetter函数执行获取两个元组元素的常量的任务,然后使用 map函数将其映射到相应的索引。 zip函数用于将此逻辑扩展到整个列表。
# Python3 code to demonstrate
# modifying tuple elements
# using zip() + map() + operator.itemgetter()
import operator
# initializing lists
test_list1 = [('Geeks', 1), ('for', 2), ('Geeks', 3)]
test_list2 = [4, 5, 6]
# printing original lists
print("The original list 1 : " + str(test_list1))
print("The original list 2 : " + str(test_list2))
# using zip() + map() + operator.itemgetter()
# modifying tuple elements
temp = map(operator.itemgetter(0), test_list1)
res = list(zip(temp, test_list2))
# print result
print("The modified resultant list of tuple : " + str(res))
输出 :
The original list 1 : [('Geeks', 1), ('for', 2), ('Geeks', 3)]
The original list 2 : [4, 5, 6]
The modified resultant list of tuple : [('Geeks', 4), ('for', 5), ('Geeks', 6)]