def string_clean(s):
cleaned_string = "".join([i for i in s if not i.isdigit()])
return cleaned_string这段代码工作得很好。但是,我想知道为什么联接方法中的for循环包含在方括号中。另外,为什么会出现这样的语法,是否有一种方法可以根据通常遇到的基本for-循环语法来构造它。例如:
for i in s:
if not i.isdigit():
return ""+ i我知道这个例子充其量只是粗略的,与我的编码能力是平行的。但是,如果你有时间的话,我会非常感谢你的反馈。
发布于 2022-05-07 12:16:30
联接方法中的for循环是因为它是一个列表理解,它生成一个列表。这是必要的,因为str.join()需要一个可迭代的,例如一个列表。
是的,您可以将其构造为一个普通的循环,但是列表理解通常被认为更简洁、更Python,并由Python的创建者Guido自己推荐。您可以使用vanillafor循环来复制结果,如下所示,但通常不推荐这样做:
def clean_string(s):
cleaned_string = ''
for i in s:
if not i.isdigit():
cleaned_string += str(i)
return cleaned_string发布于 2022-05-07 12:07:06
您的示例返回第一个不是数字的字符。foor循环应该是这样的:
newString = ""
for i in s:
if not i.isDigit():
newString += i
return newStringhttps://stackoverflow.com/questions/72152210
复制相似问题