在python中使用循环将方法替换为字符串

2024-06-16 14:09:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

secretWord = 'hello'
letter = 'l'
tag = '_ '*len(secretWord) # tag = '_ _ _ _ _'

for m in rage(len(secretWord)):
    if letter == secretWord[m] and m == 0:
         tag.replace(tag[m],letter)
    else:
         tag.replace(tag[m+2],letter)

我想要的输出是tag = '_ _ l l _' 由于某些原因,我根本无法使这个工作,即使我的逻辑是完全正确的。我有一个for循环遍历secretWord中的每个字符,如果字母在for循环中等于那个特定的字符,那么就用那个字母替换tag中的适当位置,并保持所有其他空格(''u')相同。在


Tags: and代码inhelloforleniftag
2条回答

tag是已知字符或空白字符的列表。 使用' '.join(tag)在需要时生成显示的表单。在


secretWord = 'hello'
letter = 'l'

tag = ['_']*len(secretWord)
tag = [(letter if m == letter else t) for m, t in zip(secretWord, tag)]

print(' '.join(tag))
# _ _ l l _

以下是一些解释此解决方案中使用的工具的链接:

  • [expr for variable in iterable]list comprehension。在
  • letter if m == letter else t是一个conditional expression。在
  • ^{}用于将{}中的字母与in中的字母配对 tag。在
  • ^{}用于将字母列表合并为单个 每个字母之间有空格的字符串。在

字符串在Python中是不可变的,不能修改它们。这就是您的tag没有更新的原因。在

Python有一个非常奇怪但很有用的数据模型。有些类型是可变的(例如列表和字典),有些是不可变的(例如字符串和数字)。在

字符串实例的replace()函数(实际上所有其他字符串函数)无法修改字符串。相反,它返回原始字符串的新修改版本。在

Python和非托管编程语言(如C/C++)之间的较大差异之一是,Python变量总是引用值,而C/C++变量是值的实际存储。在

奇怪的是,从python开始时,这在某种程度上可以忽略,因为某些算法的语法是相同的。比如:

a = 7
a += 35
s = "Hello"
s += " World"

Python和C/C++中的产量^ ^ {CD3>}和^ {CD4>}。对于C/C++,这是显而易见的,但是在Python中,完全不明显的事情发生了。在

在python中,s首先引用字符串"Hello"(不是:s包含字符串"Hello")。然后字符串Hello和字符串World被连接起来,然后引用s被重置为指向新的字符串"Hello World"。在

下一件事是a = b总是意味着:复制引用。它永远不会复制值。对于字符串和整数,它在实践中并没有多大区别,但对于更复杂的类型,它有很大的区别。但现在这可能超过了这个问题。在

相关问题 更多 >