Кортежи неизменяемы. Вместо этого вам нужно будет заменить его.
Поскольку списки являются изменяемыми, вы должны заменить первый элемент первого списка новым кортежем с измененным вторым значением.
test_list = [[(12, 5), (13, 6)], [(12, 2), (13, 2)]]
# test_list - unchanged
# test_list[0] - modified
# test_list[0][0] - replaced
# test_list[0][0][0] - preserved
# test_list[0][0]1] - new
new_second_value = 'foobar'
new_value = (test_list[0][0][0], new_second_value)
test_list[0][0] = new_value
Это будет дать вам:
>>> test_list
[[(12, 'foobar'), (13, 6)], [(12, 2), (13, 2)]]
Чтобы сделать это в одной строке:
test_list[0][0] = (test_list[0][0][0], 'foobar')
Обратите внимание, что если вы использовали именованные кортежи, вы могли бы немного упростить это с помощью метода ._replace()
(https://docs.python.org/2/library/collections.html#collections .somenamedtuple._replace ):
test_list[0][0] = test_list[0][0]._replace(foo='bar')