我有一个列表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]
答案 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)
这将以您想要的方式提供输出。您可以尝试一下并查看结果