当前位置: 代码迷 >> python >> 排序列表并分离不同的功能
  详细解决方案

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

热度:93   发布时间:2023-06-16 10:23:27.0

因此,给了我一个列表,我应该将其分为两个列表,一个带有公司名称,另一个带有嵌套列表中的价格。

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

但是现在它希望我将所有价格从清单中分离出来,然后将它们放在一个嵌套的清单中,我不知道该怎么做。

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

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

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']
  相关解决方案