我无法将列表转换为元组。
student = ['1712 Albert', '1703 Benny', '1799 Henry']
我希望它是
[(1712, 'Albert'), (1703, 'Benny'), (1799, 'Henry')]
到目前为止,我已经完成了这个
list1 = []
for elements in student:
list1.append(tuple(elements.split(" ")))
但是我得到了输出:
[('1712', 'Albert'), ('1703', 'Benny'), ('1799', 'Henry')]
与上述不同。如何删除数字的引号。
答案 0 :(得分:1)
看看这个单行解决方案
student = ['1712 Albert', '1703 Benny', '1799 Henry']
list1 = [ (int(year),name ) for year,name in [ x.split(" ") for x in student ] ]
答案 1 :(得分:0)
您必须明确地将第一个元素转换为整数:
list1 = []
for elements in student:
id_, name = elements.split(None, 1)
list1.append((int(id_), name))
我稍微更新了str.split()
调用:None
告诉命令拆分任何空格,无论有多少个字符(包括标签和换行符) 。 1
告诉str.split()
只拆分一次,在名称中留下空格。因此"1703 Albert Ben"
在输出中会变为(1703, 'Albert Ben')
。
演示:
>>> student = ['1712 Albert', '1703 Benny', '1799 Henry']
>>> list1 = []
>>> for elements in student:
... id_, name = elements.split(None, 1)
... list1.append((int(id_), name))
...
>>> list1
[(1712, 'Albert'), (1703, 'Benny'), (1799, 'Henry')]
答案 2 :(得分:0)
list1 = []
for elements in student:
year, name = elements.split(" ", 1)
list1.append((int(year), name)
答案 3 :(得分:0)
引号是因为您拥有的数字是字符串格式。你需要将它们改成int()。
l=[]
for element in list:
i=element.split(' ')
z=tuple(int(i[0]),i[1])
l.append(z)
答案 4 :(得分:0)
您可以像这样修改代码,将第一个元素转换为整数,然后将它们处理成元组。
for elements in student:
split_elements = elements.split(" ")
split_elements[0] = int(split_elements[0])
list1.append(tuple(split_elements))
另一种方法是运行一个额外的循环来实现这一目标,但是,两者都是相同的。
答案 5 :(得分:0)
另一个单行解决方案:
student = ['1712 Albert', '1703 Benny', '1799 Henry']
list(map(lambda x:tuple(map(lambda y:int(y) if y.isnumeric() else y,x.split())),student))
答案 6 :(得分:0)
尝试:
split_lists = [data.split(" ") for data in student]
students_list = [tuple([int(data[0]), data[1]]) for data in split_lists]
print(students_list)
您只需将数字字符串转换为整数即可。如果您并不总是确信转换后的字符串是数字,则可以在转换为students_list
时使用try-except
填充int()
,如下所示:
students_list = list()
for data in split_lists:
sub_list = list()
try:
sub_list.append(int(data[0]))
except ValueError:
sub_list.append(data[0])
sub_list.append(data[1])
students_list.append(tuple(sub_list))
print(students_list)