【问题标题】:Is there a Pythonic list comprehension that uses a for loop along with if else? [duplicate]是否有使用 for 循环和 if else 的 Pythonic 列表理解? [复制]
【发布时间】:2019-07-03 12:03:56
【问题描述】:

这是一个带有 for 循环的列表推导式,用于将所有字符转换为大写

string = 'Hello'
print "".join([s.upper() for s in string])

这是一个仅将小写字符转换为大写的列表理解

print "".join([s.upper() for s in string if s.islower()])

可以有一个列表推导可以交换字符串中的大小写吗?类似的东西

print "".join([s.upper() for s in string if s.islower() else s.lower()])

【问题讨论】:

  • 您在寻找s.swapcase()吗?
  • 是的,交换箱。但这只是我选择的一个例子。想知道我是否可以在列表理解中使用 for 循环、if 和 else
  • list comprehension to only convert the lower characters to upper case - 不。这是一个列表理解,只需要较低的字符并转换它们。 “你好”变成“ELLO”。 if 是列表理解中的过滤器
  • 也用于 Python 的三元语法检查:docs.python.org/3/reference/…

标签: python python-2.7 list-comprehension


【解决方案1】:

您只需要string.swapcase()

【讨论】:

    【解决方案2】:

    以下是使用列表推导式执行此操作的方法。请注意,当您同时包含if/else(即所谓的ternary operator)时,语法必须如下:

    condition_if_true if condition else condition_if_false

    因此在这种情况下,您可以这样做:

    string = 'Hello'
    
    "".join([s.upper() if s.islower() else s.lower() for s in string])
    # 'hELLO'
    

    【讨论】:

    • 谢谢。这正是我一直在寻找的。在列表理解中使用 for 循环、if/else 的语法
    猜你喜欢
    • 2020-03-29
    • 2021-12-23
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多