【问题标题】:Simplifying code into one line with Dictionaries and List Comprehension使用字典和列表理解将代码简化为一行
【发布时间】:2021-12-02 10:56:02
【问题描述】:

好吧,这可能是个愚蠢的问题,但是

如果我想简化这段代码:

for i in range(0, len(e)):
    if int(e[i]) % 2 == 0 and i % 2 == 0:
        print("double even")
    elif int(e[i]) % 2 != 0 and i % 2 != 0:
        print("double odd")
    else:
        print("try again")

用字典和列表理解放在一行中,我该怎么做?

【问题讨论】:

  • 嗯,你可以...但是为什么呢?不会很漂亮。
  • 此代码不会创建列表。为什么要使用列表推导?这就是它们的用途 - 创建列表。
  • @sj95126 我擅长做出愚蠢的决定来取乐并折磨自己

标签: python dictionary list-comprehension


【解决方案1】:

您可以使用enumerate 和链式比较使其更具可读性,例如:

for index, item in enumerate(e):
    if index % 2 == item % 2 == 0:
        print("double even")
    elif index % 2 == item % 2 == 1:
        print("double odd")
    else:
        print("try again")

您可以利用您实际上对i % 2e[i] % 2 的总和感兴趣的事实使其更加智能:

descriptions = ["double even", "try again", "double odd"]
for index, item in enumerate(e):
    print(descriptions[index % 2 + item % 2])

或者你可以把它变成一个单行,读起来简直就是一场噩梦:

print("\n".join(["double even", "try again", "double odd"][i%2+j%2] for i, j in enumerate(e)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    相关资源
    最近更新 更多