【问题标题】:Python: Delete a char by char from a string [closed]Python:从字符串中逐个字符删除一个字符[关闭]
【发布时间】:2017-12-28 19:44:39
【问题描述】:

我正在尝试从字符串中逐个字符地删除(每次一个字符来查看字符串的样子)

var = 'string'
var1 = ''
cor = []
for i in range(0, len(var)):
    varl = var[:i] + var[(i+1):]
    cor.append(varl)
print (cor)

这就是我得到的

['t', 'sr', 'sti', 'strn', 'strig', 'tring', 'sring', 'sting', 'strng', 'strig', 'strin']

我不知道为什么要获取列表中的前 5 个元素,它们不应该存在。 有谁知道如何解决这个问题,谢谢。

【问题讨论】:

  • 无法复制...
  • 你一步步调试你的程序了吗?这应该揭示出了什么问题......
  • 我正在使用 python 3.6 64 位 cpython 并获得所需的结果,而不是上面的结果
  • @JohnKane 在这里也一样
  • 您可以将整个内容更改为:cor = [var[:i] + var[i+1:] for i in range(len(var))]。这称为列表理解。这给了你什么?

标签: python string python-3.x list for-loop


【解决方案1】:

这确实没有任何理由不起作用。但是,改为使用列表理解,因为它解决了您的问题:

var = 'string'
cor = [var[:i] + var[i+1:] for i in range(len(var))]
print (cor)

返回

['tring', 'sring', 'sting', 'strng', 'strig', 'strin']

你的输出看起来很奇怪的主要原因是应该添加 len(var) 变量 max 的循环。

for i in range(0, len(var)):

【讨论】:

  • [var[:i] + var[(i+1):] for i, _ in enumerate(var)] 是更简洁的版本。
【解决方案2】:

在您的变量定义中,您将第二个变量定义为 var1(即 var'one'),在您的 for 循环中,您有 varl(即 var'el')。

将循环中的varls 更改为var1,您将得到您所期望的。

【讨论】:

  • 哇...当我在测试和打字的时候超级忍者。 :(
  • 为什么有人会否决这个答案?这是正确的,即使接受的答案更有效。
  • 不客气!注意到 1 和 l 之间的差异的能力总是可以挽救生命,而且在修复此问题后,原始代码确实可以正常工作。
  • 我认为这可能以前被否决了,因为 var1varl 在原始代码中彼此无关。 OP 的代码应该按照发布的方式工作。
  • 啊,是的,你是对的@EricEdLohmar。我将它快速输入到解释器中,而不是像我应该的那样将它粘贴到 .py 文件中。代码应该像 OP 发布的那样工作,所以即使答案是更好的方法,我仍然不确定他为什么会得到他得到的输出。谢谢大家! :)
猜你喜欢
  • 2011-07-05
  • 1970-01-01
  • 2023-02-06
  • 2023-03-14
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多