递归python首尾相同的子字符串_推荐Python语言多层嵌套list的递归处理方法
本文主要向大家介紹了Python語言多層嵌套list的遞歸處理方法,希望對大家學習Python語言有所幫助。
問題:用Python處理一個多層嵌套list['and',?'B',?['not',?'A'],[1,2,1,[2,1],[1,1,[2,2,1]]],?['not',?'A',?'A'],['or',?'A',?'B'?,'A']?,?'B']
需求1)如何展開成一層
需求2)如何刪除重復的元素 包括重復的list, 要考慮子list的重復元素刪除后造成的子list重復
#!/usr/bin/env?python
#?-*-?coding:?utf-8?-*-
def?unilist(ll):
"""
功能:用遞歸方法刪除多層列表中重復元素
"""
result?=?[]
for?i?in?ll:
if?isinstance(i,?list):
if?unilist(i)?not?in?result:
result.append(unilist(i))
else:
if?i?not?in?result:
result.append(i)
return?result
def?flatten(ll):
"""
功能:用遞歸方法展開多層列表,以生成器方式輸出
"""
if?isinstance(ll,?list):
for?i?in?ll:
for?element?in?flatten(i):
yield?element
else:
yield?ll
testcase=?['and',?'B',?['not',?'A'],[1,2,1,[2,1],[1,1,[2,2,1]]],?['not',?'A',?'A'],['or',?'A',?'B'?,'A']?,?'B']
print?unilist(testcase)
print?list(flatten(testcase))
運行結果
['and',?'B',?['not',?'A'],?[1,?2,?[2,?1],?[1,?[2,?1]]],?['or',?'A',?'B']]
['and',?'B',?'not',?'A',?1,?2,?1,?2,?1,?1,?1,?2,?2,?1,?'not',?'A',?'A',?'or',?'A',?'B',?'A',?'B']
以上這篇Python多層嵌套list的遞歸處理方法(推薦)就是小編分享給大家的全部內(nèi)容了,本文由職坐標整理并發(fā)布,了解更多內(nèi)容,請關注職坐標編程語言Python頻道!
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的递归python首尾相同的子字符串_推荐Python语言多层嵌套list的递归处理方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卡片的sak为不支持的类型_“师傅”两字
- 下一篇: 滚动后mouseleave失效_发动机上