【问题标题】:How to replace a value in a list while input?如何在输入时替换列表中的值?
【发布时间】:2022-12-01 01:15:35
【问题描述】:

我在输入中有一个字符串需要拆分成单独的值并留在列表中。 我正在使用以下构造来输入值。如何在变量var 上注意到值-1

import sys
readline = sys.stdin.readline
var = 10**5

current_line = list(map(int, readline().split()))

输入示例:

-1 3 0 -1 4 5

所需值current_line

[var, 3, 0, var, 4, 5]

【问题讨论】:

标签: python input


【解决方案1】:

只需检查 -1s 并用 var 替换它们:

current_line = [var if i == -1 else i for i in map(int, readline().split())]

var if i == -1 else iPython's ternary conditional operator(更准确地说是“条件表达式”),所以 -1 值被替换,其他所有值保持不变。

【讨论】:

    【解决方案2】:

    您可以为此使用一个简单的列表理解:

    x = [-1, 3, 0, -1, 4, 5]
    
    var = 10**5
    
    # loop through all elements and if the element is -1 replace it with var, else keep the old element
    x = [var if i == -1 else i for i in x]
    

    【讨论】:

      【解决方案3】:

      在迭代值列表时,将 -1 替换为 var

      current_line = [var if x == -1 else x for x in map(int, readline().split())]
      

      在这种情况下,我可能会完全放弃使用 map。如果您打算立即丢弃 int 值,则将 '-1' 转换为 -1 是没有用的。

      current_line = [var if x == '-1' else int(x) for x in readline().split()]
      

      对于不同的强调,否定比较。

      current_line = [int(x) if x != '-1' else var for x in readline().split()]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-08
        • 1970-01-01
        • 2014-02-01
        • 2011-05-29
        • 2022-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多