2012-04-15 101 views
0

我有這些列表:在列表中刪除的元組

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循環可以執行?

編輯:我道歉!他們實際上是元組!在每個值後添加逗號。抱歉!

+3

'值列表= [(10.5),(20.5),(21.5),(70.0),(34.5)]'是一個列表整數,而不是元組。 '(10.5)'是一個int。 '(10.5,)'是一個int的元組。 – eumiro 2012-04-15 06:39:15

+2

(10。5)實際上是一個比int更多的浮點數;) – 2012-04-15 06:43:24

+0

@eumiro我很抱歉!他們實際上是元組!在每個值後添加逗號。抱歉! – DarsAE 2012-04-15 06:50:40

回答

6

爲了

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] 
1

是的,你可以在一個班輪這樣做很容易:

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) 
+0

在用戶定義的函數中使用'map'而不是列表理解被認爲是非pythonic。 – agf 2012-04-15 07:12:12

+0

噢好吧,很高興知道,謝謝你的提示! – 2012-04-15 07:17:27

+0

@agf所以使用地圖的pythonic地方在哪裏? – Shep 2012-04-15 07:59:42

3
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] 
+0

它實際上是一個元組列表。 – agf 2012-04-15 07:11:30

1

剛剛訪問每個元組的第一個元素:

>>> 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] 
+0

'[x ** 2 for x,in valueelist]' – agf 2012-04-15 07:13:47

6

然後就

import itertools 
list(itertools.chain(*valuelist)) 
+4

不錯,你也可以使用'itertools.chain.from_iterable(valuelist)' – Shep 2012-04-15 07:06:26

+0

@Shep sure,thanks =) – okm 2012-04-15 07:07:40

+0

+1爲優雅。但經過進一步的思考,我不確定這是要走的路:因爲'valuelist'是**元組**的列表,所以tuple_中的_position_值可能很重要。正如[本文]中所述(http://stackoverflow.com/a/1708610/915501)元組預計將是異構的。因此,如果元組稍後獲得額外的條目,將這些值鏈接在一起將是不適當的。 – Shep 2012-04-15 08:20:16