【发布时间】:2020-09-03 22:31:32
【问题描述】:
考虑一下列表:
mylist = [1,2,3,'a','b',4,5,'c',6]
我想要做的是创建一个程序,在将每个整数元素递增1 后返回列表,跳过非整数元素。我尝试了下面的代码来使用带有参数x的while循环定义一个函数:
def f(x):
i = -1
while (i < (len(x) - 1)):
i+=1
if (type(x[i]) != "<class 'int'>"):
continue
x[i]+=1
return x
现在,我尝试使用此函数返回f(mylist) 的值。以下是输出:
[1, 2, 3, 'a', 'b', 4, 5, 'c', 6]
正如你所看到的,它返回输入本身,当我真正想要它时这是非常出乎意料的
[2, 3, 4, 'a', 'b', 5, 6, 'c', 7]
即使多次查看我的代码,我也找不到它有什么问题。
如果有人帮我解决了,我会很高兴的。
【问题讨论】:
-
"<class 'int'>"是一个字符串。列表中的任何元素是否与该字符串完全相等?大概不会。你正在寻找isinstance。 -
"<class 'int'>"是一个字符串。对象的类型不可能等于这个确切的字符串。请参阅有关type的文档:docs.python.org/3.8/library/functions.html#type -
请不要在问题标题中使用大写
-
我的建议是将整数与字符串分开,并使用不同的同构列表,而不是使用一个异构列表
-
既然您理解了代码中的错误,请不要编辑它。这让人无法理解答案在说什么。
标签: python python-3.x list function while-loop