[英]Removing tuples in a list
我有這些清單:
sqvaluelist = []
valuelist = [(10.5,), (20.5,), (21.5,), (70.0,), (34.5,)]
我想將此代碼應用於值列表:
for value in valuelist:
valuesquared = value*value
sqvaluelist.append(valuesquared,)
但我收到此錯誤:
TypeError: can't multiply sequence by non-int of type 'tuple'
我想我知道此錯誤的原因,是因為每個值都在單獨的元組內。
我的問題是,有什么辦法可以將這些值從它們各自的元組中刪除,並將它們轉換成類似
valuelist = [10.5, 20.5, 21.5, 70.0, 34.5]
無需手動編輯現有列表的結構,以便可以執行for循環?
編輯:我很抱歉! 他們實際上是元組! 在每個值之后添加逗號。 抱歉!
然后就
import itertools
list(itertools.chain(*valuelist))
為了
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]
valuelist = [(10.5), (20.5), (21.5), (70.0), (34.5)]
是一個整數列表:
>>> [(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]
是的,您可以在一個襯里中輕松完成此操作:
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)
只需訪問每個元組的第一個元素:
>>> 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]
用pythonic的方式做:
sqvaluelist = [v [0] ** 2 for v in valuelist]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.