Python 列表和元组

Posted

技术标签:

【中文标题】Python 列表和元组【英文标题】:Python Lists and tuples 【发布时间】:2017-12-06 20:55:23 【问题描述】:

有什么区别

[439 301 481 194 208 415 147 502 333  86 544 353 229]

[439, 301, 481, 194, 208, 415, 147, 502, 333,  86, 544, 353, 229]

当我尝试时

sent = sent[np.newaxis,:]

在第二个数组上,它给了我以下错误:

File "Mymain.py", line 200, in <module>
    sent = sent[np.newaxis,:]
TypeError: list indices must be integers or slices, not tuple

【问题讨论】:

[ ... ] 不会自动为您提供 numpy 数组。 numpy 是一个 third-party 附加组件,用于以您(显然)在 Matlab 中习惯的方式处理数组。 [ ... ] 本身为您提供了一个基本的 Python list,它的技巧更少。将您的 list 转换为带有 numpy.array( [ ... ]) 的 numpy 数组 这显然缺乏上下文。您可以通过编写[1, 2, 3] 来定义一个列表,但[1 2 3] 不是一个有效的语法。第一行是从哪里来的? 我喜欢 python,因为错误非常易读(不仅仅是程序!)。所以你的错误说列表(sent)索引(np.newaxis,:)必须是整数或切片而不是元组(np.newaxis,)。删除sent = sent[np.newaxis,:]中的,。假设您以正确的方式完成了其他所有操作(例如找出 np.array 和 python list 之间的区别等),它应该可以正常工作。 缺少逗号表明第一行是一个numpy数组的打印。第二个可能是一个列表。适用于数组的索引通常不适用于列表。 【参考方案1】:

问题是您正在尝试发送一个作为 python 列表的数组。首先,您需要将其转换为 nampy 数组。

import numpy as np 

py_list = [439, 301, 481, 194, 208, 415, 147, 502, 333,  86, 544, 353, 229]
convert_numpy = np.array(py_list )
sent = sent[np.convert_numpy,:]

对于第一行[439 301 481 194 208 415 147 502 333 86 544 353 229],您需要添加逗号来分隔值。

【讨论】:

【参考方案2】:

基本上就是一个numpy数组和一个python列表。

试试:

import numpy as np 
a = [1,2,3]
b = np.array(a)
print(a,b)

您可以在此处找到更多信息 http://www.numpy.org/

【讨论】:

【参考方案3】:

据我所知,sent[np.newaxis, :] 是一种 numpy 数组语法。

因此,您希望 sent 成为 numpy.array,但事实并非如此。 如错误所述:list indices must be integers or slices, not tuplesent 是一个列表。由于np.newaxis, : 是一个元组,Python 会给你这个错误。

您需要将sent 定义为一个数组。 为此,您可以将其从列表转换为数组:

sent = np.array(sent)

【讨论】:

【参考方案4】:

尝试type 来检查是什么:

a=[439, 301, 481, 194, 208, 415, 147, 502, 333,  86, 544, 353, 229]
type(a)

结果是:

<type 'list'>

使用以下方法将您的列表转换为 np.array:

import numpy as np
sent = np.array(sent)

错误就会消失。

【讨论】:

以上是关于Python 列表和元组的主要内容,如果未能解决你的问题,请参考以下文章

Python的列表和元组的区别

深入理解python列表和元组

Python 列表和元组

#9 Python列表和元组

Python核心列表和元组

Python 列表和元组