这应该是一个简单的问题,但是目前我还不明白为什么。下面是一个简单的代码,该代码假定对所有字符串进行条带化并将其转换为int。但是结果与我写的不一致。
num = ('"28"', '"23"', '"35"', '"50"', 29488)
for i in num:
if type(i) is str:
i = i[1:-1]
print(i)
print(num)
预期产量
28 23 35 50 (28,23,35,50,29488)
实际输出
28 23 35 50 ('“” 28“','” 23“','” 35“','” 50“',29488)
当我以为是一个列表时,才发现我有一个元组...
答案 0 :(得分:1)
有一些问题要解决
字符串是不可变的,因此您并没有真正更改列表中的任何内容,只是重新分配了循环变量
您不会将任何内容转换为整数,而只是从字符串中删除字符
如果您希望能够重新分配num中的元素,则需要使用实际的列表变量
例如
num = ['"28"', '"23"', '"35"', '"50"', 29488]
for i, n in enumerate(num):
if isinstance(n, str):
num[i] = int(n.strip('"'))
print(n)
print(num)
答案 1 :(得分:0)
您可以参考@ cricket_007给出的答案,如果您想使用单行列表压缩方式,请参考以下-
num = tuple(int(n.strip('"')) if isinstance(n, str) else n for n in num)
然后您将再次获得新的元组,并将其值转换为int。