【问题标题】:How to extract a value from a list if a conditional is met in Python?如果在 Python 中满足条件,如何从列表中提取值?
【发布时间】:2020-05-23 01:17:39
【问题描述】:

如果满足条件,我想提取列表中的值。例如,在列表 [0,0,3,4] 中,我想提取添加到索引值时给出 7 的值,因为添加项的索引值更高。到目前为止,我可以确认列表中存在这样一个数字,但无法弄清楚如何提取该值以使用它。

nums=[0,0,3,4]
target=7
for i in range(len(nums)):
    n = target-nums[i] in nums[i+1:]
    print (n)

输出:

False
False
True
False

由于第三个输出为真,这告诉我 (7-3) 在列表中的索引较高,但是如何将值分配给变量而不是布尔值?

【问题讨论】:

  • U 需要设置if 条件,如果为真则打印nums[i]

标签: python list for-loop


【解决方案1】:

这是一个常见的编程问题,称为“二和”,给定一个列表 nums = [0, 0, 3, 4] 和一个目标 target = 7,在列表中找到两个整数相加得到目标。

有很多方法可以在线解决这个问题,但我会根据你已经写的内容进行。你知道target-nums[i] in nums[i+1:] 是真的,那么为什么不将target-nums[i] 分配给一个变量呢? 7 - 3 == 4

nums=[0,0,3,4]
target=7
for i in range(len(nums)):
    if target-nums[i] in nums[i+1:]:
        n = target-nums[i]
        print(n)

如果您确实关心效率,那么您的解决方案目前是 O(n^2),因为对于列表中的每个项目,您都在搜索列表的其余部分以找到它的补码。这可以使用字典以 O(n) 复杂度(仅通过列表一次)来实现。

【讨论】:

    【解决方案2】:

    你可以使用这样的表达式:

    n = target-nums[i] if target-nums[i] in nums[i+1:] else None
    

    或者

    nums=[0,0,3,4]
    target=7
    for i in range(len(nums)):
        if target-nums[i] in nums[i+1:]:
            n = target-nums[i]
    

    【讨论】:

      【解决方案3】:

      target-nums[i] in nums[i+1:] 返回一个布尔值,因为我们声明已经定义的 sth 等于 sth。如果TrueFalse,我们可以使用布尔值向python 指示应该做什么:

      这里:

      nums=[0,0,3,4]
      target=7
      for i in range(len(nums)):
          if target-nums[i] in nums[i+1:]:
              n = target-nums[i]
              print(n)
      

      【讨论】:

      • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的答案添加解释并说明适用的限制和假设。 From Review
      猜你喜欢
      • 2018-07-14
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 2019-07-05
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多