2016-04-23 40 views
0

我練習列表切片,但是我有一些錯誤。如何在列表切片時使用float float()使用round()

li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11] 
print li[:int(len(li)*0.3)] 
print li[int(len(li)*0.3):] 

它將打印[1,2,3] [4,5,6,7,8,9,10,11]

但是當我使用round(),它出錯。我如何解決它?

li[:(round(li)*0.3)] 

----> 1 li[:(round(li)*0.3)]

TypeError: a float is required

首先,我嘗試添加float

float (li[:(round(li)*0.3)]) 

,但仍然有一個錯誤

+0

您是不是指'li [:round(len(li)* 0.3)]'?您目前正在嘗試將*列表本身* ... – jonrsharpe

回答

1

你忘了攜帶len()功能ca ll:

li[:round(len(li)*0.3)] 

但是,這會導致slice indices must be integers or None or have an __index__ method錯誤。您應該將圓角邊界值轉換爲整數:

li[:int(round(len(li)*0.3))] 
+0

我假設他們希望產品*內部*四捨五入,因爲它是'TypeError'。 – jonrsharpe

+0

@jonrsharpe啊,當然。好點子。 – alecxe

+0

是的,當我使用你的代碼,它仍然告訴我TypeError – busystudent