如何在列表中插入条件语句?

时间:2018-07-05 14:09:18

标签: python list

我有一个列表lst,如果它们是数字,我想拆分其元素。所以我的第一个格式是:

lst=["1,2,3"," , , ","4,5,6"]

我有一个类似下面的表达式,但是如果数字不是空格,我想做int(i)。我该如何实现?预先感谢。

[[int(i) for i in c.split(',')] for c in lst]

我需要的是

[1, 2, 3, " ", " ", " ", 4, 5, 6]

3 个答案:

答案 0 :(得分:2)

要做列表理解的一切方式:

lst=["1,2,3", " , , ", "4,5,6"]

res = [int(x) if x!=' ' else x for y in lst for x in y.split(',')]
print(res)  # [1, 2, 3, ' ', ' ', ' ', 4, 5, 6]

老派 for循环方式:

lst=["1,2,3", " , , ", "4,5,6"]

res = []
for item in lst:
  if item[0].isdigit():
    res.extend(map(int, item.split(',')))
  else:
    res.extend(item.split(','))
print(res)  # [1, 2, 3, ' ', ' ', ' ', 4, 5, 6]

为了清楚起见,我将选择第二个。一看就可以看出来。话虽如此,并且您已经编辑了需求,但第一个需求看起来并没有那么复杂。

答案 1 :(得分:0)

您可以在if条件中使用str.replace(",", "").strip()来检查它是否为有效元素。您还可以使用list.extend创建输出。

例如:

lst=["1,2,3"," , , ","4,5,6"]

res = []
for i in lst:
    if i.replace(",", "").strip():
        res.extend(map(int, i.split(",")))
    else:
        res.extend([""]*(i.count(",")+1))
print(res)

输出:

[1, 2, 3, '', '', '', 4, 5, 6]

答案 2 :(得分:0)

lst=["1,2,3"," , , ","4,5,6"]
list2=[]

for c in lst:
    i=c.split(',')
    if c[0].isdigit():  
        list2.extend(map(int,i))
    else:
        list2.extend(i)

print(list2)

这将以您想要的方式提供输出。您可以尝试一下并查看结果