如何解决我可以像在 C++ 中一样在 python 中取消引用迭代器吗?
我的实现:
def inverse(s):
for i in s:
if(i == '1'):
i = '0'
else:
i = '1'
return s
它当然不起作用,但我不明白如何使它起作用。那么我可以以某种方式更改迭代器 i
的值吗?或者至少如何简单优雅地解决我的任务?
解决方法
它当然不起作用,但我不明白如何使它起作用。那么我可以以某种方式改变迭代器 i 的值吗?
你不能让它工作。 Python 没有指针,字符串是不可变的。因此根本无法修改字符串,更不用说通过其字符的迭代器了。
这里你要做的就是重新分配局部变量。
或者至少如何简单优雅地解决我的任务?
映射旧字符串,翻转字符,加入新字符串。
或者使用str.translate,如果很少使用的实用程序,这很有趣。
,或者至少如何简单优雅地解决我的任务?
您正在逐个替换字符,.translate
的 str
方法对于此类任务很有用,请考虑以下示例:
bits = '01000100'
t = str.maketrans('01','10')
inverted = bits.translate(t)
print(inverted)
输出
10111011
说明:我用str.maketrans
来准备翻译表,当以2-argument形式使用时,需要两个等长的str
,第一个字符会被第二个字符替换成对应的字符不存在于第一个保持原样。
代码:
def inverse(s):
return "".join("0" if i == "1" else "1" for i in s)
print(inverse("111000011"))
结果:
000111100
,
python 中的字符串是不可变的,字符串在创建后永远无法更改。嗯,你有点可以,但它只会创建一个新的字符串。您需要创建一个新字符串来存储结果。
inverted = ''.join('0' if i == '1' else '1' for i in s)
''.join()
从可迭代对象创建字符串,'0' if i == '1' else '1'
反转位,(i for i in s)
是一个生成器,将逆变器应用于字符串中的每个符号。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。