[英]Modifying lists within lists via list comprehension
how can I get these loops
and if statements
into a 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] = '--'
So far: 至今:
[two+one for two in raw for one in raw]
But not sure where to put the if statements: 但不确定将if语句放在哪里:
if one[0] == '-'
and if two[1] == one[1] and two[0] == '=': two[0] = '--'
if one[0] == '-'
并且if two[1] == one[1] and two[0] == '=': two[0] = '--'
A simple list comprehension should be sufficient: 一个简单的列表理解就足够了:
raw = [['-', 'bla'], ['-', 'la'], ['=', 'bla']]
res = [['--' if (i != '-') and (['-', j] in raw) else i, j] for i, j in raw]
Result: 结果:
[['-', 'bla'], ['-', 'la'], ['--', 'bla']]
You can set item in list comprehension , 您可以在列表理解中设置项目,
Your code: 您的代码:
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)
output: 输出:
[['-', 'bla'], ['-', 'la'], ['--', 'bla']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.