我有一个整数列表,我正在尝试定义一个函数,该函数循环遍历每个元素以检查它们是否小于5,并根据其内容以字符串形式返回该列表。
intlist=[12, 10, 11, 23, 25, 2]
def clear(x):
for i in x:
if i < 5:
x[i] = 0
return str(x)
else:
return str(x)
print clear(intlist)
我的代码无法正常工作,有人可以启发我吗?
如果是,我要将列表中的所有元素更改为“ 0”。结果应该看起来像这样。
intlist=[0, 0, 0, 0, 0, 0]
但是,如果所有元素都不小于5,则输出应保持不变。
intlist=[12, 10, 11, 23, 25, 2]
答案 0 :(得分:0)
欢迎使用StackOverflow!您的代码有一些逻辑问题。这是我的解决方法:
intlist=[12, 10, 11, 23, 25, 2]
def clear(x):
for i in x:
if i < 5: # If this is satisfied once, return string with n times of '0'
x = [0]*len(x) # This creates a list of zeros with same length as before
return str(x)
return str(x)
print clear(intlist)
此外,在您的示例中,元素2
小于5,因此输出应为000000
答案 1 :(得分:0)
您可以单行执行,如果列表中的任何元素小于5
,则创建零列表,否则保留列表。
intlist = [12, 10, 11, 23, 25, 2]
intlist = [0] * len(intlist) if any(x < 5 for x in intlist) else intlist
print(intlist)
# [0, 0, 0, 0, 0, 0]
答案 2 :(得分:0)
intlist=[12, 10, 11, 23, 25, 2]
def clear(x):
if (any(i<5 for i in intlist)): return [0]*len(intlist)
else: return(x)
print(clear(intlist)) # [0, 0, 0, 0, 0, 0]
检查是否有任何项目是<5,然后返回全零或保持列表不变。
答案 3 :(得分:0)
您编写的for循环中有两个错误。首先,return语句在循环内部,这使其在if语句或else语句之后(以先到者为准)退出。其次,您在编制索引方面犯了一个错误。如果您希望通过索引访问元素,则可以在循环范围内。这是所需功能的正确实现:
def clear(x):
for i in range(len(x)):
if x[i]<5:
x[i]=0
return str(x)