Python3:无法从列表中删除项目;无法切片列表中的元素

时间:2018-08-01 16:49:32

标签: python pandas numpy

我有一个从excel工作簿表的名称创建的列表:

file = 'Per_6_PL.xlsx'
wb = pd.ExcelFile(file)
sheet_list = [wb.sheet_names]

我可以看到以下代码列表:

type(sheet_list)
list

我想删除列表的第一个元素,并使用其他元素构建循环。 当我尝试通过del.remove方法删除列表的第一个元素时,它将删除整个列表。

del sheet_list[0]

sheet_list
[]

另外,我无法从列表中切片元素,因为我得到了返回的整个列表:

sheet_list[0:3]

[['Table of Contents',
  '07',
  '01',
  '01.01',
  '13',
  '13.01',
  '3002',
  '3005',
  '3003',
  '3004',

...

我不确定这里发生了什么。我对Python还是很陌生,不了解是什么导致了这种行为。我想要一个所有工作表名称的列表,省略第一个元素。谁能告诉我我在做什么错以及如何解决?

2 个答案:

答案 0 :(得分:5)

您将数据作为嵌套列表加载。根据下面的 ALollz 评论:

mapforEach中包含的数据加载到列表中,如将其包装在硬括号(“ [”,“]”)中所指定的那样。这意味着您将sheet_list = [wb.sheet_names]的列表数据加载到另一个列表中,并将它们嵌套。加载为
wb.sheet_names,您的脚本无需更改即可正常工作。

答案 1 :(得分:2)

您的列表实际上是二维列表。列表的每个元素都是工作表名称的列表。因此,当您删除sheet_list的第一项时,实际上是在删除整个列表。

要使sheet_list仅将工作表名称包含在一个列表中,请使用以下代码:

file = 'Per_6_PL.xlsx'
wb = pd.ExcelFile(file)
sheet_list = wb.sheet_names

然后,删除“目录”:

del sheet_list[0]
sheet_list
[ '07',
  '01',
  '01.01',
  '13',
  '13.01',
  '3002',
  '3005',
  '3003',
  '3004',
...