【问题标题】:Print next element of a list, if it matches the previous element打印列表的下一个元素,如果它与前一个元素匹配
【发布时间】:2018-09-16 09:36:39
【问题描述】:

我有一个包含相似元素的列表,如果我匹配上一个元素,我想打印下一个元素。 所以是这样的:

 my_list=['one', 'two', 'one', 'one', 'two']
 for ml in my_list:
   if ml =='one':
      print (next)

所以输出将是:

two

two  

非常感谢!

【问题讨论】:

  • 不应该打印twoonetwo吗?
  • 简短回答:使用 enumerate(my_list) 使用列表索引
  • 不要为此浪费答案;这样做:my_list=['one', 'two', 'one', 'one', 'two'] for i, ml in enumerate(my_list): if ml == 'one' and i != len(my_list): print(my_list[i+1])
  • 为什么?为什么只有two
  • Aran-Fey 是对的,使用您的伪代码作为输出

标签: python list


【解决方案1】:

试试这个:

my_list=['one', 'two', 'one', 'one', 'two']
i = 0
for ml in my_list:
    if ml =='one' and i!=(len(my_list)-1):
        print (my_list[i+1])
    i+=1

输出:

two
one
two
[Finished in 0.0s]

【讨论】:

    【解决方案2】:

    这段代码应该做你想做的:

    my_list=['one', 'two', 'one', 'one', 'two']
    for i, item in enumerate(my_list):
        if i != 0:
            if item == my_list[i-1]:
                print(my_list[i+1])
    

    【讨论】:

      【解决方案3】:

      我猜您只想打印two。所以你需要检查下一个值是否也不是one

      my_list=['one', 'two', 'one', 'one', 'two']
      for i, ml in enumerate(my_list):
        if ml =='one' and my_list[i+1] != 'one':
           print (my_list[i+1])
      

      这个输出将是:

      two
      two
      

      【讨论】:

        【解决方案4】:

        我实际上会说这个问题的更优雅的解决方案是首先将您的 list 单词转换为 string

        ' '.join(my_list)

        然后像这样将它拆分为“一个”这个词

        my_string.split('one')

        因为这将为您提供每个“一个”之后所有后续单词的列表。

        >>> ['', ' two ', ' ', ' two']

        总而言之,一个简单的单行解决方案是:

        ' '.join(my_list).split('one')

        【讨论】:

          【解决方案5】:

          您可以使用zip 函数获取相邻对:

          for a, b in zip(my_list[:-1], my_list[1:]):
            if a == "one":
              print(b)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-12-26
            • 2021-06-30
            • 2012-01-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多