【问题标题】:Python for loop control variable accessed before declaration [duplicate]Python for循环控制变量在声明之前访问[重复]
【发布时间】:2016-10-11 22:57:59
【问题描述】:

我是 python 新手,我正在尝试理解以下行:

    "".join(char for char in input if not unicodedata.category(char).startswith('P'))

来源:https://stackoverflow.com/a/11066443/3818487

此代码从输入中删除所有 unicode 标点符号。我不明白为什么它有效。据我所知,它只是迭代输入中的所有字符而忽略标点符号。 char 在 for 循环中声明之前如何访问它?我来自 java 背景,所以这让我很困惑。

【问题讨论】:

  • 您可以阅读 python 中的“列表理解”。这就是这里正在做的事情。
  • “删除所有 unicode 标点符号”与“忽略标点符号字符迭代输入中的所有字符”有何不同?这些对我来说似乎是相同的最终结果。
  • 您为什么将链接答案中的标识符word 更改为此处的inputinput() 是一个内置函数,不应该这样被屏蔽。

标签: python for-loop


【解决方案1】:

在常规代码中(使用列表来存储我们的非标点字符),这种理解看起来更像以下内容。

#input is defined somewhere prior to the loop
output = []
for char in input:
    if not unicodedata.category(char).startswith('P'):
        output.append(char)
''.join(output)

理解首先迭代循环部分,值在左边被迭代。

【讨论】:

  • 啊,所以左边的char只是存储迭代结果的简写。
  • 与其说是存储结果,不如说是由迭代填充的变量(就像我的示例中的char)。那有意义吗?编辑:或者你的意思是那个意义上的“结果”?
  • 那么,char 既是单个字符,又是被迭代的所有字符的列表?
  • 不,只有一个字符。
猜你喜欢
  • 2021-08-29
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多