排序列表并分离不同的功能

时间:2015-10-26 07:27:44

标签: python

因此我获得了一份清单,我应该将其分为两个清单,一个是公司名称,另一个是嵌套清单中的价格。

['Acer 481242.74\n', 'Beko 966071.86\n', 'Cemex 187242.16\n', 'Datsun    748502.91\n', 'Equifax 146517.59\n', 'Gerdau 898579.89\n', 'Haribo 265333.85\n']

我使用以下代码正确分隔名称:

print('\n'.join(data))
namelist = [i.split(' ', 1)[0] for i in data]
print(namelist)

但是现在它要我从列表中分离所有价格并将它们放在一起嵌套在一起,我不知道该怎么做。

2 个答案:

答案 0 :(得分:2)

要构建两个单独的列表,只需使用常规循环:

names = []
prices = []
for entry in data:
    name, price = entry.split()
    names.append(name)
    prices.append(price)

如果您需要在一个列表中一起输入条目,每个条目分别包含名称和价格的列表,只需按照您的列表理解进行拆分,但不要从结果中选择一个或另一个值:

names_and_prices = [entry.split() for entry in data]

我使用不带参数的str.split()来分割任意空格。这假设您的字符串中始终只有两个条目。您仍然可以限制拆分,但是然后使用None作为第一个参数,并事先剥离线以单独删除\n

names_and_prices = [entry.strip().split(None, 1) for entry in data]

针对“嵌套”的演示'的方法:

>>> data = ['Acer 481242.74\n', 'Beko 966071.86\n', 'Cemex 187242.16\n', 'Datsun    748502.91\n', 'Equifax 146517.59\n', 'Gerdau 898579.89\n', 'Haribo 265333.85\n']
>>> [entry.split() for entry in data]
[['Acer', '481242.74'], ['Beko', '966071.86'], ['Cemex', '187242.16'], ['Datsun', '748502.91'], ['Equifax', '146517.59'], ['Gerdau', '898579.89'], ['Haribo', '265333.85']]

答案 1 :(得分:0)

split()是正确的方法,因为如果您不将其限制为一次拆分(代码中为, 1)),它将为您提供所需的一切。如果你根本不提供任何参数,它将分割成任何大小的空格。

>>> data = ['Acer 481242.74\n', 'Beko 966071.86\n', 'Cemex 187242.16\n', 'Datsun    748502.91\n', 'Equifax 146517.59\n', 'Gerdau 898579.89\n', 'Haribo 265333.85\n']
>>> nested_list = [i.split() for i in data]
>>> nested_list
[['Acer', '481242.74'], ['Beko', '966071.86'], ['Cemex', '187242.16'], ['Datsun', '748502.91'], ['Equifax', '146517.59'], ['Gerdau', '898579.89'], ['Haribo', '265333.85']]
>>> print(*nested_list, sep='\n')
['Acer', '481242.74']
['Beko', '966071.86']
['Cemex', '187242.16']
['Datsun', '748502.91']
['Equifax', '146517.59']
['Gerdau', '898579.89']
['Haribo', '265333.85']