整平字符串类型的列表时出现TypeError

2024-05-19 00:07:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集,如下所示:

ds=['North'、'Raw'、'Tree']、['Saw'、'Raw'、'Apple']、['Saw'、'Apple']、['Gum'、'Saw']、…]

数据集有21145个值。我已经在Jupyter中导入了这个数据集,并尝试运行下面的代码,将这个列表作为一个列表

代码:

     list_1 = []
     for sublist in ds:
       for val in sublist:
           list_1.append(val)

我得到的错误是:

  1 list_1 = []
  2 for sublist in ds:
  3     for val in sublist: <---
  4         list_1.append(val)

TypeError:“float”对象不可编辑

预期产出为:

列表_1=['North','Raw','Tree','Saw','Raw','Apple','Saw','Apple','Gum','Saw',…]


Tags: 数据代码intreeapple列表forraw
3条回答
new_list =[]
for x in ds:
   try:
      new_list.extend(x)
   except:
      new_list.extend([x])

我觉得您的列表中可能有一些元素不是列表。例如,“ds”可能类似于[['a'、'b']、['c'、'd']、'e'、['f'、'g']…]中的任何一个,即列表和;单元素。上面的代码应该工作,因为这将考虑每个奇异元素作为列表中的“除”的情况下作为ANP;当“try”案例中出现错误时

您可以使用itertools.chainhttps://docs.python.org/3/library/itertools.html。我想这对你的情况很合适

import itertools


ds = [['N','R','T'],['S','R','A'],['S','A']]

print(list(itertools.chain(*ds)))

使用itertools.chain()是这方面非常常见的习惯用法,但若您更喜欢列表理解,可以使用一行代码

flattened = [j for i in lsts for j in i]

这可能更容易阅读

相关问题 更多 >

    热门问题