【问题标题】:Iterative if function迭代 if 函数
【发布时间】:2016-05-18 13:10:29
【问题描述】:

我目前正在编写一个 python 脚本,该脚本将接受一个字符串,将其转换为列表,然后删除所有元音。然后它将最终结果打印为字符串。但是,我正在使用的迭代函数正在输出每个结果,无论它是否是元音。我试过颠倒并只保留辅音,但无济于事。下面是我使用的代码。

string = input("#: ")
new_list = []

for x in list(string):
    if [x.lower() == y for y in list("aeiou")]:
        global new_list
        new_list.append(x)

print(''.join(new_list))

任何见解将不胜感激。

【问题讨论】:

    标签: python python-3.x if-statement iteration


    【解决方案1】:

    这一行:

    if [x.lower() == y for y in list("aeiou")]
    

    创建一个包含五个元素的列表(每个元素是TrueFalse)。
    例如,如果x'e',它将创建列表

    [False, True, False, False, False]
    

    如果x 不是元音,它将创建列表

    [False, False, False, False, False]
    

    任何非空列表都为真,因此满足if 条件。


    您的意思是“对于我的元音列表中的任何 yx.lower() 是否等于 y?”,即:

    if any(x.lower()==y for y in list("aeiou")):
    

    或更简洁:

    if x.lower() in "aeiou":
    

    如果你想检查一个字母是否不是元音,应该是这样的:

    if x.lower() not in "aeiou":
    

    【讨论】:

    • 非常感谢,这为我解决了问题 :)
    【解决方案2】:

    我不完全确定您在那里尝试做什么,但这样做...

    string = input("#: ")
    print(''.join([x for x in string if x.lower() not in "aeiou"]))
    
    #: Hello there!
    Hll thr!
    

    更有效的方法是:

    print(input("#: ").translate(str.maketrans("","","aeiou")))
    

    【讨论】:

    • 没想到可以压缩这么多!非常感谢。
    【解决方案3】:

    一个班轮炫耀:

    string = input("#: ")
    print(''.join(filter(lambda x: x.lower() in 'aeiou', string)))
    

    参考文献

    [1]https://docs.python.org/2/library/functions.html#filter

    [2]http://www.diveintopython.net/power_of_introspection/lambda_functions.html

    【讨论】:

      【解决方案4】:

      首先,字符串和列表一样是迭代器,因此无需将字符串类型转换为列表。

      s = "your_string_goes_here".lower()
      
      s = s.replace('a', '')
      s = s.replace('i', '')
      s = s.replace('e', '')
      s = s.replace('o', '')
      s = s.replace('u', '')
      print s
      

      【讨论】:

      • 这会扫描列表 5 次。
      猜你喜欢
      • 2010-12-14
      • 2010-09-06
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 2013-05-20
      相关资源
      最近更新 更多