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:'(没有任何条件)是什么意思的问题?
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:'(没有任何条件)是什么意思的问题?
如果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,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(",")))
这是荒谬的增加循环中有一个'return'。 – albert
每个表达式都是[condition](https://docs.python.org/2.7/reference/expressions.html#booleans)。 – Goyo