你展示的东西实际上不是一个列表,很难猜出实际的列表可能是什么。但我假设它是这样的:
list_o_lists = [428,
[(' whether', None), (' mated', None), (' rooster', None), ('', None)],
429,
[(' produced', None),
(' without', None),
(' rooster', None),
(' infertile', None),
('', None)]]
任何列表推导式都将访问其中的元组,这已经相当糟糕了:
[[tup for tup in lst] if is_sequence(lst) else lst for lst in list_o_lists]
但是修改它以访问每个元组的第二个元素是微不足道的:
[[tup[1] for tup in lst] if is_sequence(lst) else lst for lst in list_o_lists]
无论您使用的是什么列表推导式,无论它有多糟糕,根据您的问题,您的每个元组都作为一个表达式存在,这意味着您只需要在该表达式上加上[1]
。
从您的评论中:
抱歉,这些数字是索引值。
我认为您实际上有更简单的东西:
list_o_lists = [
[(' whether', None), (' mated', None), (' rooster', None), ('', None)],
[(' produced', None),
(' without', None),
(' rooster', None),
(' infertile', None),
('', None)]]
然后你尝试的列表推导式可能是这样的:
[[tup for tup in lst] for lst in list_o_lists]
当然,这只是一个猜测,因为您仍然没有向我们展示您的实际列表或尝试的列表理解式。但正如我上面所说:“无论您的列表理解式是什么……在某个地方,您都将每个元组作为表达式,这意味着您所要做的就是在该表达式上放置一个
[1]
。”
因此,这个问题和上面那个问题一样容易解决:
[[tup[1] for tup in lst] for lst in list_o_lists]
如果它不是你实际拥有的,那么你实际拥有的也同样容易更改。但你必须自己动手,因为我们在反复尝试阅读您的思想时都失败了,而您实际的代码却在您面前。
[428, [(...)], 429, [(...)], ...]
吗?还是其他什么东西? - abarnert[1]
吗? - abarnert[y for x,y in a_list]
???我可能读错了问题。 - Niclas Nilsson