拆分列表中的元组项
我想知道怎么把第二个元组拆分开。
data = [('152', 'Farko', 'Kier'), ('153', 'Park - Pub')]
我想要得到这样的输出:
[('152', 'Farko', 'Kier'), ('153', 'Park', 'Pub')]
我试过这样做:
lst = []
for i in data:
if len(i) == 2:
i[1] = tuple(i[1].split(' - '))
lst.append(i)
这样是可以的,但出现了一个错误 TypeError: 'tuple' object does not support item assignment
。我不能用 i = tuple(i[1].split(' - '))
这样做,因为我需要保留元组中位置 i[0]
的数字。能否提供一个列表推导的解决方案?欢迎任何建议!
3 个回答
1
正如你所看到的,元组是不能被修改的,不过你可以创建一个新的元组,里面放上你想要的数据:
data = [('152', 'Farko', 'Kier'), ('153', 'Park - Pub')]
lst = []
for i in data:
if len(i) == 2:
i = i[:1] + tuple(i[1].split(' - '))
lst.append(i)
或者,如果你想修改原来的列表:
for i, tup in enumerate(data):
if len(tup) == 2:
data[i] = tup[:1] + tuple(tup[1].split(' - '))
2
在编程中,有时候我们需要把一些代码放在特定的地方,这样它们才能正常工作。比如说,如果你在写一个程序,想要让它在特定的条件下执行某些操作,你就需要使用一些控制结构,比如“如果”语句。这就像是在说:“如果发生了某件事,那就做这个。”
另外,代码块就像是一个小盒子,里面装着一组指令。你可以把这些指令放在一起,方便管理和执行。这样,当你需要执行这些指令时,只需要调用这个盒子就可以了。
总之,编程就是把各种指令组合在一起,让计算机按照我们的想法去做事情。理解这些基本概念后,你就能更好地写出自己的程序了。
newdata = [tuple(s for t in tu for s in t.split(' - ')) for tu in data]
# [('152', 'Farko', 'Kier'), ('153', 'Park', 'Pub')]
2
你可以使用列表推导式:
lst = [t[:1] + tuple(t[1].split(' - ')) if len(t) == 2 else t for t in data]
或者你可以调整你的循环,来创建一个新的元组:
for i in data:
if len(i) == 2:
i = i[:1] + tuple(i[1].split(' - '))
lst.append(i)