San*_*rni 10 python nested-lists python-2.7
我是python的初学者.我想知道是否有任何内置函数或其他方式,所以我可以在python 2.7中实现以下:
在列表和子列表中查找all -letter并将其替换为['not',letter]
例如:查找下面列表中以 - 开头的所有项目,并将其替换为['not',letter]
Input : ['and', ['or', '-S', 'Q'], ['or', '-S', 'R'], ['or', ['or', '-Q', '-R'], '-S']]
Output : ['and', ['or', ['not','S'], 'Q'], ['or', ['not','S'], 'R'], ['or', ['or', ['not','Q'], ['not','R']], ['not','S']]]
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议如何在python中做到这一点.谢谢
尝试一下递归:
def change(lol):
for index,item in enumerate(lol):
if isinstance(item, list):
change(item)
elif item.startswith('-'):
lol[index] = ['not',item.split('-')[1]]
return lol
Run Code Online (Sandbox Code Playgroud)
在行动:
In [24]: change(['and', ['or', '-S', 'Q'], ['or', '-S', 'R'], ['or', ['or', '-Q', '-R'], '-S']])
Out[24]:
['and',
['or', ['not', 'S'], 'Q'],
['or', ['not', 'S'], 'R'],
['or', ['or', ['not', 'Q'], ['not', 'R']], ['not', 'S']]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2914 次 |
| 最近记录: |