【问题标题】:Split list of lists in new list [closed]新列表中的列表拆分列表[关闭]
【发布时间】:2016-06-22 02:54:31
【问题描述】:

我有一个 A_str 列表列表,其中包含有关公司名称和财务比率的信息。 现在我想要一个只包含公司名称的新列表和第二个包含所有比率的列表。 到目前为止,我可以在“-”处拆分列表,但无法将这些新元素附加到新列表“公司”和“比率”中。

A_str = ['Name',
         'AMAZON.COM - TOT RETURN IND',
         'AMAZON.COM INC - NET CASH FLOW - FINANCING',
         'AMAZON.COM INC - NET CASH FLOW - INVESTING',
         'AMAZON.COM INC - NET CASH FLOW-OPERATING ACTIVS',
         'AMAZON.COM INC - COST OF GOODS SOLD (EXCL DEP)',
         'AMAZON.COM INC - EARNINGS BEF INTEREST & TAXES',
         'AMAZON.COM INC - EBIT & DEPRECIATION',
         'AMAZON.COM INC - GROSS INCOME',
         'AMAZON.COM INC - NET SALES OR REVENUES',
         'AMAZON.COM INC - OPERATING INCOME',
         'AMAZON.COM INC - NET INCOME AVAILABLE TO COMMON',
         'AMAZON.COM INC - ACCOUNTS PAYABLE',
         'AMAZON.COM INC - CASH',
         "AMAZON.COM INC - COMMON SHAREHOLDERS' EQUITY",
         'AMAZON.COM INC - CURRENT ASSETS - TOTAL',
         'AMAZON.COM INC - CURRENT LIABILITIES-TOTAL',
         'AMAZON.COM INC - TOTAL INVENTORIES',
         'AMAZON.COM INC - LONG TERM DEBT',
         'AMAZON.COM INC - TOTAL ASSETS']

    for element in A_str:
        company.append(element.split('-'))
    print company

输出应如下所示:

company = [AMAZON.COM, AMAZON.COM INC, AMAZON.COM INC... AMATON.COM INC]
ratios = [TOT RETURN IND, NET CASH FLOW - FINANCING, NET CASH FLOW - INVESTING... TOTAL ASSETS]

【问题讨论】:

  • 看起来不像列表列表
  • 你能举一个你想要的输出的例子吗?

标签: python


【解决方案1】:

您可以简单地映射拆分,过滤它是否生成大小为 2 的元组,然后将其压缩以分别获取值:

In[9]: l=['Name', 'AMAZON.COM - TOT RETURN IND', 'AMAZON.COM INC - NET CASH FLOW - FINANCING', 'AMAZON.COM INC - NET CASH FLOW - INVESTING', 'AMAZON.COM INC - NET CASH FLOW-OPERATING ACTIVS', 'AMAZON.COM INC - COST OF GOODS SOLD (EXCL DEP)', 'AMAZON.COM INC - EARNINGS BEF INTEREST & TAXES', 'AMAZON.COM INC - EBIT & DEPRECIATION', 'AMAZON.COM INC - GROSS INCOME', 'AMAZON.COM INC - NET SALES OR REVENUES', 'AMAZON.COM INC - OPERATING INCOME', 'AMAZON.COM INC - NET INCOME AVAILABLE TO COMMON', 'AMAZON.COM INC - ACCOUNTS PAYABLE', 'AMAZON.COM INC - CASH', "AMAZON.COM INC - COMMON SHAREHOLDERS' EQUITY", 'AMAZON.COM INC - CURRENT ASSETS - TOTAL', 'AMAZON.COM INC - CURRENT LIABILITIES-TOTAL', 'AMAZON.COM INC - TOTAL INVENTORIES', 'AMAZON.COM INC - LONG TERM DEBT', 'AMAZON.COM INC - TOTAL ASSETS']

In[22]: companies, ratios =zip(*filter( lambda y: len(y) == 2, map(lambda x: tuple(x.split(" - ")), l)))
In[23]: companies
Out[22]: 
('AMAZON.COM',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC',
 'AMAZON.COM INC')
In[24]: ratios
Out[23]: 
('TOT RETURN IND',
 'NET CASH FLOW-OPERATING ACTIVS',
 'COST OF GOODS SOLD (EXCL DEP)',
 'EARNINGS BEF INTEREST & TAXES',
 'EBIT & DEPRECIATION',
 'GROSS INCOME',
 'NET SALES OR REVENUES',
 'OPERATING INCOME',
 'NET INCOME AVAILABLE TO COMMON',
 'ACCOUNTS PAYABLE',
 'CASH',
 "COMMON SHAREHOLDERS' EQUITY",
 'CURRENT LIABILITIES-TOTAL',
 'TOTAL INVENTORIES',
 'LONG TERM DEBT',
 'TOTAL ASSETS')

【讨论】:

  • 非常感谢您的快速回答,完美解决!
【解决方案2】:

拆分每个项目并压缩结果,省略标题元素:

company, ratios = zip(*(item.split(' - ') for item in A_str[1:]))

如果您可以更改 A_str,则可以改为弹出标题元素:

A_str.pop(0)
company, ratios = zip(*(item.split(' - ') for item in A_str))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多