目录
range
range函数产生一个均匀间隔的整数列表:
range数据的创建是从0开始的。
range(5)等价于range(0,5)
range还有一种用法是range(x,y,z)
范围就是从x到y-1,z代表步长:
range经常被用来遍历索引序列:
可变类和不可变类
Python中的大多数对象都是可变的,比如列表、字典、NumPy数组或大多数用户定义的类型(类)。这意味着它们包含的对象或值可以被修改。其他的,如字符串和元组,是不可变的:
当尝试改变元组元素时,程序会发生报错。 同理字符串:
Tuple(元组)
tuple是一种一维、固定长度、不可变的Python对象序列。最简单的创建方法是使用逗号分隔的值序列:
在更复杂的表达式中定义元组时,通常需要将值括在圆括号中,就像在创建元组的元组的例子中一样:
任何序列或迭代器都可以通过调用tuple转换为元组:
与大多数其他序列类型一样,可以使用方括号[]访问元素。像C、c++、Java和许多其他语言一样,序列在Python中是0索引的:
tuple和list都有一个非常有用的功能count() ,它可以计算一个值的出现次数
List
与元组相反,列表是可变长度的,并且可以修改其内容。它们可以使用方括号[]或使用列表类型函数来定义:
Tuple和list通用函数
列表和元组在语义上类似于一维对象序列,因此可以在许多函数中互换使用。
Adding and removing elements
Insert
Pop
insert的逆操作是pop,它删除并返回一个特定索引处的元素:
Remove
元素可以使用remove来按值删除,它会找到第一个这样的值并将其从列表中删除:
in
你可以使用in关键字检查一个列表是否包含一个值:
连接和组合列表
Note that list concatenation is a comparatively expensive operation since a new list must be created and the objects copied over. Using extend to append elements to an existing list, especially if you are building up a large list, is usually preferable. Thus,
everything = []
for chunk in list_of_lists:
everything.extend(chunk)
everything = []
for chunk in list_of_lists:
everything = everything + chunk
上一段代码运行起来是要比下一段代码快的
Sort
list可以通过调用sort函数就地排序(不需要创建新对象):
sort也可以对字符串的长度进行排序:
slice
你可以使用slice表示法来选择类似列表类型的部分(数组,元组,NumPy数组),它的基本形式包括传递给索引操作符[]的start:stop:
slice可以进行赋值:
虽然包含了开始索引处的元素,但不包含停止索引,因此结果中的元素数量是stop - start:
负索引相对于末端对序列进行切片:
step(步长)也可以用在第二个冒号后面,例如,取所有其他元素:
使用-1作为步长可以从最后向前遍历列表:
Dict
dict可能是最重要的Python内置数据结构。更常用的名称是哈希映射或关联数组。它是一个大小灵活的键值对集合,其中键和值是Python对象。一种方法是使用花括号{}和用冒号分隔键和值:
可以使用与访问列表或元组元素相同的语法来访问、插入或设置元素:
虽然dict的值可以是任何Python对象,但键必须是不可变的对象,如标量类型(int、float、string)或元组(元组中的所有对象也需要是不可变的)。可以用hash()来测试dict中的key是否是不可变的:
要将list用作键,一个简单的解决方法是将其转换为元组:
Set
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
列表,集合和字典推导式
列表推导式是最受欢迎的Python语言特性之一。
也可以进行缩写:
upper 的作用:小写字母转为大写字母的字符串。
集合和字典推导式是一种自然的扩展,以习惯上相似的方式产生集合和字典,而不是列表。
下面放几个简单的例子:
字典也可以通过这种方法创建: