繁体   English   中英

我可以知道这行特定的代码是什么意思吗,我如何将它放入 Python 的 for 循环中

[英]Can I know what does this specific line of code means and how do i put it in a for loop in Python

我想知道这条特定的线路是什么意思? 元音 = [i for i in string if i in m]

*主要代码是:*

  def count_vowel(string):
    m = "AaEeIiOoUu"
    vowels = [i for i in string if i in m]
    if len(vowels) == 0:
        print("No vowels in the name")
    else:
        print(vowels)
        print("count:", len(vowels))

string = (input("enter anything to find amount of vowels in it :"))
count_vowel(string)

你能帮我么?

这称为列表理解 它构建一个新列表,其中每个项目都采用存储在变量string中的字符串中的每个字符,但只有在字符串m也找到该字符时才会生成值。


列表推导式的一般结构是:

resultingList = [operateOnIteratorsToProduceResult(i1, i2) for i1, i2 in iterable if condition] # lists are iterables

这可以看作是一个条件映射,当且仅当条件评估为True (否则不产生任何值,我们继续迭代)时,我们将迭代器映射到相应的结果。

一种特殊情况(您的示例中的情况)是您只需生成迭代器。 在这种情况下,您只需根据条件过滤可迭代对象:

resultingList = [i for i in iterable if condition]

还有一个完整的映射,如:

resultingList = [operateOnIteratorsToProduceResult(i1, i2) for i1, i2 in iterable if condition else alternativeResult]

如果条件计算结果为TrueoperateOnIteratorsToProduceResult(i1, i2)作为结果列表中的元素生成,否则生成alternativeResult

理解列表理解的最佳方法是将各个部分分开。

它相当于:

vowels = []
for i in string:
    if i in m:
        vowels.append(i)

它是一个列表推导式,它遍历字符串并过滤掉m字符串中的所有值,然后转换回字符串。

从文档:

列表推导式由包含表达式的括号组成,后跟一个for子句,然后是零个或多个forif子句。 结果将是一个新列表,该列表是通过在其后面的forif子句的上下文中对表达式进行计算而产生的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM