2017-06-06 57 views
0

Python新手在這裏 - 無法找到任何類似的在線。Python - 如果列表元素不存在則排除變量

我想分析一個包含很多行的變量列長度的大型數據集。我的數據的一個例子可能是:「LY R15 515 750 601 999」,其中每行的元素數量不同。我希望列變量引用每個後續元素,但僅當該元素存在時才引用。我將在後面的數字表達式中爲if語句使用所有列變量。

data = 'LY R15 515 750 601 999' 
remove_blanks = [''] 
entries = data.split() 
''.join([i for i in entries if i not in remove_blanks]) 
trash = (entries[0], entries[1]) 
time = int(entries[2]) 
column_1 = int(entries[3]) 
column_2 = int(entries[4]) 
column_3 = int(entries[5]) 
column_4 = int(entries[6]) 
column_5 = int(entries[7]) 
column_6 = int(entries[8]) 
column_7 = int(entries[9]) 
column_8 = int(entries[10]) 
column_9 = int(entries[11]) 
column_10 = int(entries[12]) 
column_11 = int(entries[13]) 
column_12 = int(entries[14]) 
column_13 = int(entries[15]) 
column_14 = int(entries[16]) 
column_15 = int(entries[17]) 
column_16 = int(entries[18]) 
column_17 = int(entries[19]) 
column_18 = int(entries[20]) 
print(entries) 

我收到的錯誤:

column_3 = int(entries[5])

IndexError: list index out of range

我的理解正在發生的事情,因爲元素沒有在列表中存在。基本上,如果一個元素不存在,我不希望這個變量被考慮。請幫忙!

P.S.我相信有一個更簡單的方法來寫這個,所以如果有的話,請讓我知道!

回答

0

字典也許可以做的工作

variables = {} 
for ix, value in enumerate(entries[3:]): 
    variables["column_{0}".format(ix)] = int(value) 

你得到

{'column_1': 601, 'column_0': 750, 'column_2': 999} 

然而,這將是您更容易使用一些包像熊貓的數據分析

+0

謝謝你的幫助。你會如何調用這些變量?如果對任何變量嘗試「print(column_0)」或「if column_0> = 0:」,我總是收到一個錯誤,指出未解析的引用「column_0」,則會發生此錯誤。 – DRauch

+0

變量是你的字典的關鍵。你做例如打印(變量['column_0'])並得到750 – nova

+0

好吧,我現在看到。它適用於所有存在的元素!雖然,就像我上面所說的,如果我的列表沒有包含足夠的元素,我希望沒有賦值的變量不被具有數字表達式的if語句考慮。有沒有辦法使用這本詞典來做到這一點?也許如果我把我的代碼的例子,它會更有意義? – DRauch

0

變量名爲column_1column_18不是很方便。

代替

column_1 = int(entries[3]) 
column_2 = int(entries[4])  
column_3 = int(entries[5]) 
... etc, etc ... 

考慮

column = [None] + [int(v) for v in entries[3:]] 

然後用column[3],而不是column_3

[None] +是獲取列表下標(基於零)的閃避以匹配基於1的變量名稱。

+0

太好了!謝謝您的幫助。我明白你的意思是基於0和1的衝突,這很有意義:) – DRauch

+0

如果你可以使用答案,請接受它。 – BoarGules

+0

你的答案使它簡單得多,但是當print元素不存在時,仍然會導致相同的錯誤,如print(column [10])。我希望找到一種方法讓腳本忽略不存在的列。 – DRauch

相關問題