Python-如果列表元素不';不存在

Python-如果列表元素不';不存在,python,list,indexing,Python,List,Indexing,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 i

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)
我收到的错误是:

列_3=int(条目[5])

索引器:列表索引超出范围

我理解这是因为列表中不存在该元素。本质上,如果一个元素不存在,我不想考虑那个变量。请帮忙


另外,我相信有一个更简单的方法来写这个,所以如果有,请让我知道

将变量命名为
column_1
column_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\u 3


[None]+
是一种使列表下标(以零为基础)与变量名(以1为基础)匹配的方法。

字典可能可以完成这项工作

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

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

不过,使用一些像pandas这样的软件包进行数据分析会容易得多

太好了!谢谢你的帮助。我明白你对基于0和基于1的冲突的意思,这很有意义:)你的答案让它简单了很多,但当元素不存在时,执行类似于打印(列[10])的操作仍然会导致相同的错误。我希望找到一种方法,让脚本忽略不存在的列。谢谢你的帮助。你怎么称呼这些变量?如果我尝试“print(column_0)”或“if column_0>=0:”对于任何变量,都会出现一个错误,称为未解析引用“column_0”。这些变量就是字典的键。例如,您可以打印(变量['column_0'])并获得我现在看到的结果。它适用于所有存在的元素!但是,正如我上面所说,如果我的列表中没有包含足够的元素,我希望没有被赋值的变量不会被带有数值表达式的if语句考虑。有没有办法用这本词典做到这一点?也许如果我举一个代码的例子,它会更有意义?所以你在字典的键上循环-你的键是被赋值的变量。在上面的示例中,您不需要执行
变量['column_8']
,因为该键不存在。您对输入变量执行
操作:打印(变量[key])
这似乎会导致更多问题。我正在尝试使用特定列值(列表元素)从十进制转换为ascii(即,对于键入变量,digit=[chr(key)]。这将在转换代码中返回一个错误“需要一个整数(get type str)”。是否有办法继续使用字典来缓解此问题?