列表理解的确切定义是产生 一个 列表对象。您的两个列表对象的长度甚至不同;您将不得不使用副作用来实现您想要的。
不要在这里使用列表推导。只需使用普通循环即可:
listOfA, listOfB = [], []for idx, x in enumerate(s): target = listOfA if x == 'A' else listOfB target.append(idx)
这样 一 来,您只需执行 一个
循环即可;这将击败任何两个列表理解,至少直到开发人员找到一种使列表理解建立列表的方法快于使用单独
list.append()调用的循环的两倍时为止。
我想任何一天挑这个在嵌套列表理解 仅仅
是能够产生在同一行两个列表。正如Python的禅宗所言:
可读性很重要。



