我正在尝试将列表的第一项拆分为两项,我试图转换为exacmle:
l= [('pzibley/09.03', [8, 0, 2, 0, 0]), ('pzibley/09.01', [7, 2, 0, 0, 1])]
为:
l= [([pzibley], [09.03], [8, 0, 2, 0, 0]), ([pzibley] , [09.01], [7, 2, 0, 0, 1])]
我尝试了几种方法,但由于我是业余爱好者,我无法做到这一点。
答案 0 :(得分:3)
new_l = []
for tup in l:
a,b = tup[0].split('/')
new_l.append(([a], [float(b)], tup[1]))
new_l
# [(['pzibley'], [9.03], [8, 0, 2, 0, 0]), (['pzibley'], [9.01], [7, 2, 0, 0, 1])]
答案 1 :(得分:2)
[tuple([j] for j in i[0].split('/')) + (i[1],) for i in l]
# [(['pzibley'], ['09.03'], [8, 0, 2, 0, 0]),
# (['pzibley'], ['09.01'], [7, 2, 0, 0, 1])]
答案 2 :(得分:1)
定义一个函数,用于分隔输入tuple
中的每个部分,并在单个元组中重新组合它们:
def splitter(tpl):
a,b = tpl[0].split("/")
return(([a], [float(b)] , tpl[1]))
我们可以在列表splitter
上迭代l
函数:
[splitter(x) for x in l]
运行它会产生:
In [5]: [splitter(x) for x in l]
Out[5]:
[(['pzibley'], [9.03], [8, 0, 2, 0, 0]),
(['pzibley'], [9.01], [7, 2, 0, 0, 1])]
答案 3 :(得分:0)
l = [('pzibley/09.03', [8, 0, 2, 0, 0]), ('pzibley/09.01', [7, 2, 0, 0, 1])]
for i in range(len(l)):
l[i]=(l[i][0].split('/'),l[i][1])
print(l)
由于元组是不可变的,你必须重新分配整个元组,而不仅仅是元组中的第一个元素。
答案 4 :(得分:0)
对于初学者来说,最容易理解的解决方案是按照查看列表的方式回答并拆分每个项目并按照以下方式将它们添加到您想要的列表中:
l_new=[]
l= [('pzibley/09.03', [8, 0, 2, 0, 0]), ('pzibley/09.01', [7, 2, 0, 0, 1])]
for i in l:
temp = i[0].split('/')
l_new.append(([temp[0]],[temp[1]],i[1]))
print(l_new)
#[(['pzibley'], ['09.03'], [8, 0, 2, 0, 0]), (['pzibley'], ['09.01'], [7, 2, 0, 0, 1])]