繁体   English   中英

从列表中的元组访问第n个元素,但元组的长度不同

[英]Accessing nth element from tuples in list, but the length of the tuple is different

例如我有一个这样的元组列表,第一个元组的最后一个元素是空的:

data=[('1',),('2','3'),('6','5'),('3','4')]

我想获取每个元组的最后一个元素,我使用这样的东西,对于数据中的 i, j,如果 j 不为空,则将 j 作为列表:

    lastelemtent=list(set([j for i,j in data if j]))[0]

我收到错误: not enough values to unpack (expected 2, got 1)我想得到如下结果: lastelemtent=['3','5','4']

您可以使用语法something[-1]来选择元组列表的最后一个元素。

要从数据中获取每个元组的最后一个元素,您必须运行

lastelement = [e[-1] for e in data]

也许您想要每个元组的第二个元素,除非元组较短。

[x[1] for x in data if len(x) > 1]

你的前提是错误的。 ('1',)的“最后一个元素”不是空的,但这只是一个只有一个元素的元组,这就是为什么你得到“没有足够的值来解包”的原因。 这也意味着'1'既是该元组的第一个元素,又是最后一个元素,因此使用索引[-1]会起作用(不会产生错误),但可能不会执行您期望或想要的操作。

如果你想要一个“空”的最后一个元素,也许你可以使用('1', '')('1', None)

问题是您尝试将大小为 1 (1,)的元组解包为大小为 2 的元组: i, j 您可以使用扩展的可迭代解包

lastelemtent = [j for *i, j in data if i]
data=[('1',7),('2','3'),('6','5'),('3','4')]
lastelement = [i[-1] for i in data]

lastelement将包含这个 -->[7,3,5,4]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM