删除/替换我的字符串中的每个第n,第m和第i个字符我做错了什么?
''.join('*' if any(i % n == 0 for n in [9, 10, 11])
else char for i, char in enumerate(string))
Run Code Online (Sandbox Code Playgroud)
对于:
string = "100000000111000000001110000000011"
Run Code Online (Sandbox Code Playgroud)
它返回:
*00000000***000000*0*1*0000*00*11
Run Code Online (Sandbox Code Playgroud)
代替:
*00000000***00000000***00000000**
Run Code Online (Sandbox Code Playgroud)
你为什么期待*00000000***00000000***00000000**?每个第9,第10和第11个角色将是:
9th: 0, 9, 18...
10th: 0, 10, 20...
11th: 0, 11, 22...
Combined: 0, 9, 10, 11, 18, 20, 22...
Run Code Online (Sandbox Code Playgroud)
事实上*00000000***000000*0*1*0000*00*11,对于提供的字符串.根据您的预期结果,看起来您实际想要做的是屏蔽每11个字符的第1个,第10个和第11个字符(索引0,9和10).试试这个:
>>> ''.join('*' if i % 11 in [0, 9, 10]
... else char for i, char in enumerate(string))
'*00000000***00000000***00000000**'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
385 次 |
| 最近记录: |