【问题标题】:Q: Python3 - If Statements for changing list lengths问:Python3 - 用于更改列表长度的 If 语句
【发布时间】:2017-06-13 17:00:03
【问题描述】:

我正在尝试将数据集分析为不同长度的列表。我正在逐一调用我的数据集的行(行)以由我的函数进行分析。无论列表的长度如何,我都希望该功能仍能正常运行。

我的代码:

f = open('DataSet.txt')
for line in iter(f):

remove_blanks = ['']
entries = line.split()
''.join([i for i in entries if i not in remove_blanks])
trash = (entries[0], entries[1])
time = int(entries[2])
column = [int(v) for v in entries[3:]]


def myFun():
    print(entries)
    print_string = ''
    if column[0] == 100:
        if column[1] >= 250 and column[2] == 300:
            if len(column) >= 9:
                digit = [chr(x) for x in column[4:9]]
                print_string = ('code: ' + ''.join(str(digit[l]) for l in range(5)) + ' ')
            if len(column) >= 13:
                optional_digit = [chr(d) for d in column[9:13]]
                for m in range(0, 4):
                    print_string += 'Optional Field: ' + optional_digit[m] + ''
            else:
                print_string += 'No Optional Field '
        pass
    pass
    print(print_string)
    print('')


myFun()

f.close()

如果我的数据行的长度不够长(即列表以 column[6] 结尾),我会收到错误:

line 17, in function
    print('Code: ' + digit[l])
IndexError: list index out of range

我希望它仍然打印Code: #number #number #number #number,并在打印时将任何不存在的列留为空白,这样如果列表长度不同,一行可以打印为Code: ABC9,下一行打印为Code: AB

请帮忙! :)

【问题讨论】:

    标签: list python-3.x if-statement indexing


    【解决方案1】:

    好吧,只要确保您循环的列表没有超过可用时间:

    print_string = 'code: ' + ''.join(str(digit[l]) for l in range(min(5, len(digit)))) + ' '
    

    或更好:

    print_string = "code {} ".format("".join(str(dig) for dig in digit[:5]))
    

    虽然我觉得你把这件事复杂化了。

    【讨论】:

    • 谢谢!我刚刚学习编程,所以我确信这过于复杂,但您的解决方案似乎有效。我只需要更改 if 语句的 len(column) 条件并放入您的代码。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-03-04
    • 2010-11-15
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    相关资源
    最近更新 更多