如何更改元组中的数据类型?
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以获取有关列表与元组差异的更多信息。
我正在处理 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以获取有关列表与元组差异的更多信息。