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