将列表索引拆分为新列表 Python

3

我有一个使用Python的编程入门实验室。我想要分割一个列表(split a list):

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']

非常感谢您的帮助。


4
你尝试过什么? - miradulo
1
作为回答的一部分,有人会建议使用zip(*something)进行转置。请记住,如果items为空,则此方法无效。 - user2357112
4个回答

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
我建议像这样:

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为空时也能正常工作。


0

首先将items的元素拆分(在这里解释),然后将它们压缩在一起(在这里解释):

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)

但请注意,如果您在items为空时调用它,这将导致ValueError


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')]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接