Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除列表中的元组_Python - Fatal编程技术网

Python 删除列表中的元组

Python 删除列表中的元组,python,Python,我有以下清单: sqvaluelist = [] valuelist = [(10.5,), (20.5,), (21.5,), (70.0,), (34.5,)] 我想在valuelist上应用此代码: for value in valuelist: valuesquared = value*value sqvaluelist.append(valuesquared,) 但我收到了这个错误: TypeError: can't multiply sequence by non

我有以下清单:

sqvaluelist = []
valuelist = [(10.5,), (20.5,), (21.5,), (70.0,), (34.5,)]
我想在valuelist上应用此代码:

for value in valuelist:
    valuesquared = value*value
    sqvaluelist.append(valuesquared,)
但我收到了这个错误:

TypeError: can't multiply sequence by non-int of type 'tuple' 不需要手动编辑现有列表的结构,以便执行for循环


编辑:我道歉!它们实际上是元组!在每个值后添加逗号。对不起

是的,您可以在一行程序中轻松完成:

map(lambda x: x, valuelist)
这是因为@eumiro指出,(10.5)实际上是一个浮点而不是元组。元组应该是(10.5,)

要计算正方形,非常简单:

map(lambda x: x*x, valuelist)
如果您有一个像(10.5,)这样的实元组列表,您可以这样修改它:

map(lambda x: x[0], valuelist)
map(lambda x: x[0]*x[0], valuelist)
是Int的列表:

>>> [(10.5), (20.5), (21.5), (70.0), (34.5)]
[10.5, 20.5, 21.5, 70.0, 34.5]
(10.5)
是一个整数
(10.5,)
是一个整数的元组

因此:

>>> sqvaluelist = [x*x for x in valuelist]
>>> sqvaluelist
[110.25, 420.25, 462.25, 4900.0, 1190.25]

只需访问每个元组的第一个元素:

>>> valuelist = [(10.5,), (20.5,), (21.5,), (70.0,), (34.5,)]
>>> sqvaluelist = [x[0]*x[0] for x in valuelist]
>>> sqvaluelist
[110.25, 420.25, 462.25, 4900.0, 1190.25]
那就

import itertools
list(itertools.chain(*valuelist))
使

valuelist = [(10.5,), (20.5,), (21.5,), (70.0,), (34.5,)]
进入

我会使用列表理解

valuelist = [x[0] for x in valuelist]

以蟒蛇式的方式进行:

sqvaluelist=[v[0]**2表示valuelist中的v]


valuelist=[(10.5)、(20.5)、(21.5)、(70.0)、(34.5)]
是一个整数列表,而不是元组
(10.5)
是一个整数。
(10.5,)
是一个整数的元组。(10.5)实际上是一个浮点,而不是一个整数;)@我道歉!它们实际上是元组!在每个值后添加逗号。很抱歉很好,您还可以使用
itertools.chain.from\u iterable(valuelist)
+1来实现优雅。但经过进一步思考,我不确定这是一条路:因为
valuelist
是一个元组列表,所以值在元组中的位置可能很重要。如前所述,元组应该是异构的。因此,如果元组以后获得其他条目,将这些值链接在一起是不合适的。@Shep yes,我相信这就是你的答案被选中的原因=)我的答案是为了演示一种普通的Pythonic方法来展平包含子序列项的序列。它实际上是一个元组列表。在用户定义的函数上使用
map
而不是列表理解被认为是非Pythonic的。@agf那么Pythonic在哪里使用呢地图?@Shep这个帖子提供了关于这个话题的信息:@Shep是的,这个帖子基本上涵盖了它。在将单个内置函数应用于iterable时,我偶尔会使用map,因为我知道它的性能相当或更好,我觉得它“感觉”不错,因为您不必为列表中的每个项目指定名称,它强调您将函数应用于整个列表。
valuelist = [(10.5,), (20.5,), (21.5,), (70.0,), (34.5,)]
valuelist = [10.5, 20.5, 21.5, 70.0, 34.5]
valuelist = [x[0] for x in valuelist]