当前位置: 代码迷 >> python >> for循环根据其值替换元素
  详细解决方案

for循环根据其值替换元素

热度:100   发布时间:2023-06-27 21:29:00.0

我有一个整数列表,我试图定义一个函数,该函数循环遍历每个元素以检查它们是否小于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]

欢迎来到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

您可以单行执行,如果列表中的任何元素小于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]
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]

检查any项是否小于5,然后返回全零或保持列表不变。

您编写的for循环中有几个错误。 首先,return语句在循环内部,这使其在if语句或else语句之后(以先到者为准)退出。 其次,您在编制索引方面犯了一个错误。 如果您希望通过索引访问元素,则可以在循环范围内。 这是所需功能的正确实现:

def clear(x):

    for i in range(len(x)):
        if x[i]<5:
            x[i]=0

    return str(x)
  相关解决方案