📜  Python|用列表修改元组内容

📅  最后修改于: 2022-05-13 01:55:44.280000             🧑  作者: Mango

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)]