如何从列表中的每个项中删除方括号

4

Excel上有一个数字列表,我希望看到类似下面的内容:

[110652450, 5309154]

然而,我看到了这样的东西:
[[110652450], [5309154]] 

我尝试了在一个类似问题中建议的newtest = [x[:-1] for x in df],但这只是删除了我的数字并保留了括号。

df = pd.read_excel(filename.xlsx",sheetname='Sheet1')


df = df.values.tolist()

print(df)


你似乎认为 [[110652450], [5309154]] 是一个字符串,但据我所见它是一个多维列表。你需要通过索引来访问它。因此,x[0] 将会给你 [110652450], [5309154],而 x[0][0] 将返回 110652450 - mas
我建议多了解一下如何在Python中处理列表和其他数据类型。 - mas
@malan 看起来 OP 并没有试图将这个列表视为字符串(他甚至在问题的标题中使用了“列表”一词)。他在哪里暗示 df 是一个字符串? - Joel
@Joel,也许你是正确的,但通过访问一个切片,就好像他在修剪括号一样(尽管如果他这样做,他会写成x[1:-1]),基于直觉,我认为他理解列表的列表是一个用外部括号格式化的字符串。 - mas
@ Joel,我相信我的最初评论也是错误的。由于该列表是单项列表而不是双项列表的列表,因此x [0]将得出[110652450] - mas
5个回答

6
我不是很理解你的问题,但你似乎在寻找类似于这样的东西?
df = [[110652450], [5309154]]
newest = [i[0] for i in df]
print(newest)
>> [110652450,5309154]

谢谢!已排序 :) - pepperjohn

2

numpy.squeeze 可能是执行此操作的首选方法。调用 np.squeeze(a) 来对您希望展平的数组进行操作。与列表推导式(例如 [e[0] for e in a])相比,np.squeeze 的速度应该更快。


1
尝试。
newtest = [x[0] for x in df]

您需要访问列表的第一个元素,而不是使用整个列表。


0
你有一个只有一个元素的列表。 x[:-1] 返回不包含最后一个元素的列表,因此只返回一个空列表。相反,可以使用 [x[0] for x in df][x for x, in df]

0
你可以使用列表推导式来去除方括号:
df = pd.read_excel("filename.xlsx", sheetname="Sheet1")
df = df.values.tolist()
df = [x[0] for x in df]
print(df)

这个方法可行是因为 df 中的每个元素都是包含一个项目的列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接