2017-02-22 44 views
0
def string_to_int_list(s): 
    L1=[] 
    for i in s.split(','): 
    if i:#what does this line mean? 
     L1.append(int(i)) 
    return L1 

我要轉換的字符串列表,如果我刪除「如果我」,它會提醒我,ValueError異常:無效的字面INT()基數爲10:「」關於if,'if + some variable:'(沒有任何條件)是什麼意思的問題?

+0

這是荒謬的增加循環中有一個'return'。 – albert

+1

每個表達式都是[condition](https://docs.python.org/2.7/reference/expressions.html#booleans)。 – Goyo

回答

1

如果i有一個值,條件將返回true,如果i的值爲None(空),則將返回false。這與i != None相同。

另外我測試,如果拆分函數返回一個空字符串""它不會通過if條件。

爲了檢查一個字符串是否是數字(0 - 9),可以使用str.isdigit()

str.isdigit()

Return true if all characters in the string are digits and there is at least one character, false otherwise.

For 8-bit strings, this method is locale-dependent.

此代碼:

def string_to_int_list(s): 
    L1=[] 
    for i in s.split(','): 
    if i and i.isdigit():#what does this line mean? 
     L1.append(int(i)) 
    return L1 

a = "1,2,3,q,43,hello" 

b = string_to_int_list(a) 
print b 

它將返回[1, 2, 3, 43]

注意,我刪除縮進至return,因爲它在循環內沒有意義。

1

你在這裏做的是分割你的字符串,,然後轉換爲整數,如果你看到一個有效的值。

比方說,你1,2,3,4,,,5

什麼腳本返回你的[1,2,3,4,5]

列表你應該嘗試什麼,如果狀態恢復爲空字符串,無,空單即[]或{}。如果你有

這個腳本會失敗「ABC,2,3,4,5」

你也可以循環功能像

filter(lambda x : x , map(lambda x : int(x) if x else None, a.split(","))) 
相關問題