从元组中移除元素时多余的空元素
问题描述:
我对以下python结果有疑问。 假设我有一个元组:从元组中移除元素时多余的空元素
a = ((1,1), (2,2), (3,3))
我想删除(2,2)
,而我用下面的代码这样做:
tuple([x for x in a if x != (2,2)])
这工作得很好,结果是:((1,1), (3,3))
,就像我预计。
但是假设我从a = ((1,1), (2,2))
启动并使用相同的元组()命令,结果是((1,1),)
,而我希望它是((1,1))
总之
>>> a = ((1,1), (2,2), (3,3))
>>> tuple([x for x in a if x != (2,2)])
((1, 1), (3, 3))
>>> a = ((1,1), (2,2))
>>> tuple([x for x in a if x != (2,2)])
((1, 1),)
为什么第二种情况下的逗号和空元素?我该如何摆脱它?
谢谢!
答
Python使用一个尾随逗号的情况下的元组只有一个元素:
In [21]: type((1,))
Out[21]: tuple
从docs:
一个特殊的问题是含有0或1 项目的元组的结构:该语法有一些额外的怪癖,以适应这些。空 元组由一对空括号构成;一个元组与 一个项目是通过跟随一个逗号(不是 足以将一个值括在括号中)的值构造的。
>>> empty =()
>>> singleton = 'hello', # <-- note trailing comma
>>> len(empty)
0
>>> len(singleton)
1
>>> singleton
('hello',)
答
它指示一个元素的元组,只是为了防止混淆。
(1,)
是一个元组,而(1)
只是不必要的括号。
http://*.com/questions/7992559/python-tuple-comma-syntax-rule – 2015-10-12 13:01:50