我有一个使用python编程实验室的介绍。我想拆分列表:
items = ['40/40', '10/40', '30/40', '4/5', '18/40', '40/40', '76/80', '10/10']
分为两个新列表:
items_1 = ['40','10','30','4','18','40','76','10']
items_2 = ['40','40','40','5','40','40','80','10']
感谢任何帮助。
答案 0 :(得分:2)
所以这是标准zip
单行。当items
非空时,它可以正常工作。
items = ['40/40', '10/40', '30/40', '4/5', '18/40', '40/40', '76/80', '10/10']
items_1, items_2 = map(list, zip(*(i.split('/') for i in items)))
如果您对元组而不是列表感到满意,则可以删除map(list(..))
构造。
答案 1 :(得分:1)
我建议这样的事情:
items = ['40/40', '10/40', '30/40', '4/5', '18/40', '40/40', '76/80', '10/10']
items_1 = list()
items_2 = list()
for item in items:
i_1, i_2 = item.split("/") #Split the item into the two parts
items_1.append(i_1)
items_2.append(i_2)
结果(来自IDLE shell)
>>> print(items_1)
['40', '10', '30', '4', '18', '40', '76', '10']
>>> print(items_2)
['40', '40', '40', '5', '40', '40', '80', '10']
即使 items
为空,它也可以。
答案 2 :(得分:0)
首先拆分items
的元素(解释here),然后压缩它们(解释为here):
items = ['40/40', '10/40', '30/40', '4/5', '18/40', '40/40', '76/80', '10/10']
items_tuples = map(lambda x: x.split('/'), items)
items_1, items_2 = zip(*items_tuples)
但请注意,如果您在ValueError
为空时调用它,则会产生items
。
答案 3 :(得分:0)
您可以尝试以下方法:
items = ['40/40', '10/40', '30/40', '4/5', '18/40', '40/40', '76/80', '10/10']
print(list(zip(*[i.split('/') for i in items])))
或
print(list(zip(*(map(lambda x:x.split('/'),items)))))
输出:
[('40', '10', '30', '4', '18', '40', '76', '10'), ('40', '40', '40', '5', '40', '40', '80', '10')]