2017-02-22 47 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(","))) 
相关问题