如果是,则将变量填充为空列表

时间:2018-11-01 17:35:38

标签: python python-3.x

我有一个空列表并填充了数据。我正在尝试将列表的最后一个元素存储到变量中。如果列表中有元素,则工作正常。但是,当我传递一个空的[]列表时,会出现类似IndexError: list index out of range的错误。我应该为[]使用哪种语法?

ids = [
    'abc123',
    'ab233',
    '23231ad',
    'a23r2d23'
    ]

ids = []
# I tried these for empty
final = [ids if [] else ids[-1]] #error
# final = [ids if ids == None else ids == ids[-1]] # error
# final = [ids if ids == [] else ids == ids[-1]] # gives [[]] instead of []
print(final)

基本上,如果ID中有一个空列表,则需要它提供[]。如果有元素,则给出最后一个起作用的元素。

5 个答案:

答案 0 :(得分:2)

这里是执行此操作的一种方法:

final = ids[-1] if ids else None

(将列表为空时,用您希望None取的值替换final。)

答案 1 :(得分:0)

final = ids[-1] if len(ids) > 0 else []

这将解决当前的问题。请仔细阅读课程资料或教程,以了解各种技巧。举例来说,您的词组ids if []并没有做您(当前)似乎在想的事情:它不会对空列表进行{em> not 检查ids -所做的只是看空列表是否“真实”,并且空列表的计算结果为False

答案 2 :(得分:0)

您收到错误消息是因为,如果列表为空,则您将无法选择最后一个项目,它会正确地抛出IndexError

尝试这个例子

ids = [[i for i in range(10)] for x in range(3)]
ids.append([])

last_if_not_empty = [i[-1] for i in ids if i]

在这里,通过if i过滤掉非空列表,这是选择非空列表的条件。从那里可以选择列表的最后一个元素。

答案 3 :(得分:0)

a = list[-1] if not len(list)==0 else 0

答案 4 :(得分:0)

您可以通过下面的表达式检查空列表。

data = []
if data:  #this returns False for empty list
    print("list is empty")
else:
    print("list has elements")

所以你可以做的。

final = data[-1] if data else []
print(final)