代码之家  ›  专栏  ›  技术社区  ›  Rhys

通过列表理解修改列表中的列表

  •  0
  • Rhys  · 技术社区  · 6 年前

    我怎样才能得到这些 loops if statements 理解?

    raw = [['-', 'bla'], ['-', 'la'], ['=', 'bla']]
    
    for one in raw:
        if one[0] == '-':
            for two in raw:
                if two[1] == one[1] and two[0] == '=': two[0] = '--'
    

    迄今为止:

    [two+one for two in raw for one in raw]
    

    但不确定将if语句放在何处:

    if one[0] == '-' if two[1] == one[1] and two[0] == '=': two[0] = '--'

    2 回复  |  直到 6 年前
        1
  •  2
  •   jpp    6 年前

    简单的列表理解就足够了:

    raw = [['-', 'bla'], ['-', 'la'], ['=', 'bla']]
    
    res = [['--' if (i != '-') and (['-', j] in raw) else i, j] for i, j in raw]
    

    结果:

    [['-', 'bla'], ['-', 'la'], ['--', 'bla']]
    
        2
  •  0
  •   Aaditya Ura    6 年前

    您可以在列表理解中设置项目,

    您的代码:

    for one in raw:
        if one[0] == '-':
            for two in raw:
                if two[1] == one[1] and two[0] == '=': two[0] = '--'
    

    转换为列表理解:

    [[two.__setitem__(0,'--') if two[1]==one[1] and two[0]=='=' else two for two in raw] if one[0]=='-' else one for one in raw]
    print(raw)
    

    输出:

    [['-', 'bla'], ['-', 'la'], ['--', 'bla']]