【发布时间】:2015-02-12 20:50:22
【问题描述】:
我是 python 新手,我只是在阅读有关列表的内容。我一直在试图找出一个列表是否是一个变量
e.g. Hello = []
这是因为我读到您使用“=”符号分配变量。或者,我只是在上面的示例中为空列表分配了一个名称。
【问题讨论】:
标签: python list variables assign
我是 python 新手,我只是在阅读有关列表的内容。我一直在试图找出一个列表是否是一个变量
e.g. Hello = []
这是因为我读到您使用“=”符号分配变量。或者,我只是在上面的示例中为空列表分配了一个名称。
【问题讨论】:
标签: python list variables assign
没有。列表是一个对象。您使用= 将列表分配给名称引用。
因此,a = [1,2] 产生 a,它是一个名称引用(本质上是一个指针),指向您通过查看 globals() 看到的基础列表对象。
>>> a = [1,2]
>>> globals()
{'a': [1, 2], '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None}
列表是ListType 的实例,它是object 的子类。
>>> import types
>>> types.ListType.mro()
[<type 'list'>, <type 'object'>]
>>> object
<type 'object'>
>>> b = types.ListType()
>>> b
[]
【讨论】:
在 Python 中,对象的概念非常重要(正如其他用户可能已经指出的那样,我的速度很慢!)。
您可以将list 视为元素的列表(或者实际上是一个对象)。事实上,list 是一个Variable 大小的object,表示项目的集合。 Python 列表有点特别,因为您可以在 list 中包含混合类型的元素(例如带有 int 的字符串)但同时,您也可以争论“set、map、tuple 等呢?”。例如,
>>> p = [1,2,3,'four']
>>> p
[1, 2, 3, 'four']
>>> isinstance(p[1], int)
True
>>> isinstance(p[3], str)
True
>>>
在set 中,您可以改变集合的大小 - 是的。在这方面,set 是一个包含唯一项的变量 - 如果您满意的话....
这样,map 也是一个“变量”大小的键值对,其中每个唯一键都有一个映射到它的值。 dictionary 也是如此。
如果您对= 符号感到好奇 - 您已经在问题中使用了关键字; “任务”。在所有高级语言(无论如何,大多数语言)中,= 是赋值运算符,其中您在 lhs 上有一个变量名和一个有效值(相同类型/超类型的变量或有效值)。
【讨论】:
行:
Hello = []
创建一个新的空list 对象(list 类的实例),并且分配对该对象的引用到名称(或“标识符”)Hello。
然后您可以通过名称Hello 访问该列表对象(只要它在当前范围内可访问),例如:
Hello.append('World')
列表是可变的,即它们可以就地更改,在这种情况下,通过将新的字符串对象附加(添加)到名称 Hello 引用的列表中。这可能就是您所说的“变量”。
有关 Python 中名称的更多信息,请参阅http://nedbatchelder.com/text/names.html。
有关列表(以及 Python 的其他内置序列类型)的更多信息,请参阅the official docs。
【讨论】:
Python lists 是 Data structure,它使您能够保存数据项的集合。数据结构是对象或编程类型,使您能够将任何类型的数据(整数、字符串等)存储在内存中或永久存储在硬盘上。
在您的情况下,您已经定义了一个列表结构 - 它将存储符号 hello 引用的数据项的集合。符号 hello 在编程中被称为variable。
使用变量,您可以从程序的任何部分引用您的列表,以定位和访问其成员项目。
例子:
hello = [1, 3, 100]
使用从0 开始的第N 个索引调用hello 将访问并返回放置在第N 个索引位置的值。
print hello[0]
这将输出 1 。
有关更多示例,请参阅Array 数据结构。
【讨论】: