如何更改元组中的数据类型?

How to change datatypes in tuples?

我正在处理 int 和浮点数的列表,并尝试将第二个参数更改为字符串。

我的是这样的:

array = [(12.0, 23),(9.0, 24)]

我想要的是:

array = [(12.0, '23'),(9.0, '24')]

我尝试使用简单的for,如下所示:

for i in range(len(array)):
  array[i][1] == str(array[i][1]) 

谁能解释一下为什么这不起作用,如果可以,还有更简单的方法吗? 非常感谢!

>>> array = [(12.0, 23),(9.0, 24)]
>>> [(x[0],str(x[1])) for x in array]
[(12.0, '23'), (9.0, '24')]
>>>

元组是不可变的,因此您不能只更改它们。你需要制作新的。列表理解可能是最简单的:

array = [(12.0, 23),(9.0, 24)]

array = [(a, str(b)) for a,b in array]
# [(12.0, '23'), (9.0, '24')]

如果您需要就地更改列表,您可以,但您仍然需要新的元组:

array = [(12.0, 23),(9.0, 24)]

for i, (a,b) in enumerate(array):
    array[i] = (a, str(b))

array
# (12.0, '23'), (9.0, '24')]
[tuple(map(str, xs)) for xs in lst]
[('12.0', '23',) , ('9.0', '24')]

result = []
    for xs in lst:
     temp = []
      for x in xs:
         temp.append(str(x))
      result.append(tuple(temp))



result

顺便说一句,元组是无法更改的,即不可变的

在这种情况下,创建新的元组(如其他答案中所建议的)通常是正确的方法,但如果您还需要保留列表项的身份(如果您在其他地方引用了它们),您可以改为切换从元组到列表:

>>> array = [[12.0, 23], [9.0, 24]]
>>> for i in range(len(array)):
...     array[i][1] = str(array[i][1])
...
>>> array
[[12.0, '23'], [9.0, '24']]
>>>

但是请注意,由于您正在访问具有文字索引 ("[1]") 的元素,元组可能是语义上更正确的类型。您需要权衡考虑因素与列表的可变性优势。

这是因为列表是可变的,而元组是不可变的。不可变意味着它们一旦被分配就不能改变。 此外,字符串、浮点数、整数都是不可变的 python 数据结构。 请参阅下面的link以获取有关列表与元组差异的更多信息。

https://realpython.com/python-lists-tuples/