您好,我想知道是否可以在一个列表条件中运行两个不同的枚举条件:
mlist = ['a', 'boy 808', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'a', 'boy 808', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
loc = [(a,b), a for a, b for b, zip(x in enumerate(mlist), y in enumerate (mlist)) if '808' in x, if 'd' in y]
print(loc)
这可能吗?我尝试了上述操作,但出现无效语法错误:
File "c:\Users\sys_nsgprobeingestio\Documents\dozie\odfs\ctests.py", line 118
loc = [(a,b), a for a, b for b, zip(x in enumerate(mlist), y in enumerate (mlist)) if '808' in x, if 'd' in y]
^
SyntaxError: invalid syntax
我想得到想要的输出:[(1,3)、(12,14)]澄清一下,这只是一个示例数组。此逻辑将用于出现多个关键字的大文件中。这里的单词开始和结束文件的某个部分。我希望获得每个部分的头和尾的订购对
每次出现的有序元组列表
我能够使用3种不同的列表理解来获得我需要的内容。我想知道您是否可以一次完成这项工作:
mlist = ['a', 'boy 808', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'a', 'boy 808', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
blist = [i for i,x in enumerate(mlist) if 'boy' in x ]
dlist = [i for i,x in enumerate(mlist) if 'd' in x ]
tuplist = [(a,b) for a, b in zip((x for x in blist), (y for y in dlist)) ]
print(tuplist)
您可以简单地
zip
您的blist
和dlist
列表:输出:
如果
boy
值始终与d
值交错,则可以通过同时检查两个值,将理解度降低为1:相关问题 更多 >
编程相关推荐