['1@a', '11@aa', '111@aaa', '112@aab', '12@ab', '121@aba', '122@abb', '1221@abba', '1222@abbb', '123@abc', '1231@abca', '2@b', '21@ba']
输出的原则从一位数到多位数依次输出,如果下一层有两个及以上的,就输出两个,如果下一层就1个,那么连带下下层一起输出。
输出的结果为:
1 a
2 b
-----
1 a
11 aa
12 ab
-----
11 aa
111 aaa
112 aab
-----
12 ab
121 aba
122 abb
123 abc
-----
12-122 ab-abb
1221 abba
1222 abbb
-----
12-123 ab-abc
1231 abca
12311 abcaa
12312 abcab
12313 abcac
-----
2 b
21 ba
Python问题请教下,不知道列表中非顺序的循环输出方式如何写
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-文盲老顾 2021-06-16 13:52关注
import re s = ['1@a', '11@aa', '111@aaa', '112@aab', '12@ab', '121@aba', '122@abb', '1221@abba', '1222@abbb', '123@abc', '1231@abca', '2@b', '21@ba'] def pp(s,lv,p=''): o = '' n = [] node = '' e = False if len(p)>0: x = p.split('@') o += x[0] + ' ' + x[1] + '\n' node = x[0] for i in s: x = i.split('@') if (len(x[0])==lv): t = False if node!='': if x[0][0:lv-1]==node: t=True else: t=True if t: o += x[0] + ' ' + x[1] + '\n' n.append(i) e = True o += '----\n' if e: for i in n: o += pp(s,lv+1,i) return o print(re.sub('----\n[^\n]+\n(?=----)','',pp(s,1)))
s = ['1@a', '11@aa', '111@aaa', '112@aab', '12@ab', '121@aba', '122@abb', '1221@abba', '1222@abbb', '123@abc', '1231@abca', '2@b', '21@ba'] n = [{'id':n.split('@')[0],'val':n.split('@')[1],'parent':n.split('@')[0][:-1]} for n in s] def pp(s,p=''): o = [] for i in s: if i['id']==p: o.append(i) if i['parent']==p: o.append(i) if len(o)>1: for i in o: print(i['id'] + ' ' + i['val']) print('----') for i in s: if i['parent']==p: pp(s,i['id']) pp(n)
自行扩充一下程序,判断子集数量,追加前缀规则
第一个是纯字符串判断,第二个是解析成字典列表,并追加一个parent,来判定父级
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 测距传感器数据手册i2c
- ¥15 RPA正常跑,cmd输入cookies跑不出来
- ¥15 求帮我调试一下freefem代码
- ¥15 matlab代码解决,怎么运行
- ¥15 R语言Rstudio突然无法启动
- ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
- ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
- ¥15 用windows做服务的同志有吗
- ¥60 求一个简单的网页(标签-安全|关键词-上传)
- ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法