通过列表理解修改列表中的列表
Modifying lists within lists via list comprehension
我怎样才能理解这些 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] = '--'
一个简单的列表理解就足够了:
raw = [['-', 'bla'], ['-', 'la'], ['=', 'bla']]
res = [['--' if (i != '-') and (['-', j] in raw) else i, j] for i, j in 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] = '--'
convert to list comprehension :
[[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']]
我怎样才能理解这些 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] = '--'
一个简单的列表理解就足够了:
raw = [['-', 'bla'], ['-', 'la'], ['=', 'bla']]
res = [['--' if (i != '-') and (['-', j] in raw) else i, j] for i, j in 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] = '--'
convert to list comprehension :
[[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']]