【问题标题】:Looping into a list to get the previous value of a particular value within that list循环到列表中以获取该列表中特定值的先前值
【发布时间】:2022-01-18 17:25:23
【问题描述】:

我们这里有一个字符串列表,称为 list_strings `

list_strings =["john", "sarah", "bianca", "savie", "sandy", "john", "harry", "john", "debra", "john"]

如果一个指定的值是“john”,我们可以得到john之前的所有字符串,那么输出应该是这样的!`

result = ["none", "sandy", "harry", "debra]

【问题讨论】:

    标签: python list loops


    【解决方案1】:

    您可以使用简单的for 循环:

    list_strings =["john", "sarah", "bianca", "savie", "sandy", "john", "harry", "john", "debra", "john"]
    result = []
    for i, j in enumerate(list_strings):
        if j == "john":
            if i:
                result.append(list_strings[i-1])
            else:
                result.append(None)
    
    [None, 'sandy', 'harry', 'debra']
    

    【讨论】:

      【解决方案2】:

      这是你如何使用内置的zip 方法:

      list_strings =["john", "sarah", "bianca", "savie", "sandy", "john", "harry", "john", "debra", "john"]
      
      s = "john"
      
      print([i for i, j in zip(list_strings[:-1], list_strings[1:]) if j == s])
      

      输出:

      ['sandy', 'harry', 'debra']
      

      当列表中的第一个字符串为"john" 时,为了包含"none",您可以这样做:

      list_strings =["john", "sarah", "bianca", "savie", "sandy", "john", "harry", "john", "debra", "john"]
      
      s = "john"
      
      result = []
      if list_strings[0] == "john":
          result.append("none")
      for i, j in zip(list_strings[:-1], list_strings[1:]):
          if j == s:
              result.append(i)
      print(result)
      

      输出:

      ['none', 'sandy', 'harry', 'debra']
      

      【讨论】:

        【解决方案3】:

        大概有一千种方法可以做到这一点。一个人可能正在使用列表理解并枚举为

        def get_before(search_name:str, names:list[str]) -> list[str]:
            return [names[i-1] if i > 0 else 'none' for i, name in enumerate(names) if name == search_name]
        
        get_before('john', list_string)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-12
          • 1970-01-01
          • 1970-01-01
          • 2017-04-14
          • 1970-01-01
          • 1970-01-01
          • 2016-06-01
          • 1970-01-01
          相关资源
          最近更新 更多