目录
-
创建列表
numbers = [1, 2, 3, 4, 5]
names = ['Alice', 'Bob', 'Claire']
mix = [1, 2.0, '3.14159', [4,5], numbers]
print(mix)
numbers = list(range(5))
print(numbers)
列表可以容纳不同类型的元素。
可以用内置函数list()将特定对象(如range()函数返回的对象)转换成列表。
-
列表的重复运算
numbers = [0] * 5
print(numbers)
numbers = [1,2,3] * 3
print(numbers)
numbers = [1,2,3] * 0
numbers = [1,2,3] * -10
numbers = [1,2,3] * True
numbers = [1,2,3] * False
numbers = [1,2,3] * 1.0 #会异常
当 * 号的左侧是列表而右侧是整数时,*号变成重复运算符,此时会复制出一个列表的多个副本并将它们全部连接在一起。
-
遍历列表
numbers = [1,2,3,4,5]
for num in numbers :
print(num)
numbers = [1,2,3,4,5]
for num in numbers :
num = 99
print(numbers)
用for循环遍历列表。循环变量赋值,不会影响列表的内容。
-
索引,负索引
nums = [10, 20, 30, 40]
print(len(nums))
print(nums[0], nums[1], nums[2], nums[3])
print(nums[-4], nums[-3], nums[-2], nums[-1])
len函数用于计算列表的长度。
如果列表长度为N(N>0),则索引范围为 0 到 N-1。而负索引的范围是 -1 到 -N
-
按索引遍历列表
names = ['Alice', 'Bob', 'Claire']
for index in range(len(names)) :
print(names[index])
len和range一起使用来获取索引,然后用索引遍历
-
列表是可变的
nums = [10, 20, 30]
nums[1] = 11
print(nums)
nums = [1]
nums = nums + [2]
nums += [3,4,5]
print(nums)
列表可变,可以对单个元素进行赋值,也可以对整个列表进行连接,使用+ 和 += 符号。
注意第二段的第二行,如果不赋值而仅执行 nums + [2],则nums是不会变的。
-
列表切片
nums = [0, 10, 20, 30, 40]
print(nums[1:3]) #[10,20]
print(nums[:3]) #[0,10,20]
print(nums[2:]) #[20,30,40]
print(nums[:]) #[0, 10, 20, 30, 40]
print(nums[0:5:2]) #[0,20,40]
print(nums[-1:]) #[40]
print(nums[4:9]) #[40]
print(nums[-10:-3]) #[0,10]
print(nums[100:200]) #[]
切片是list的副本,由起始和结束两个索引确定范围,包含起始索引元素,但不包含结束索引元素。
如果省略起始索引,则起始为0。如果省略结束索引,则结束索引为列表长度。
切片支持步长。也支持负索引。
注意:切片无效索引不会引起异常,python会与省略索引相同的规则处理。
如果起始大于结束,则返回空列表
-
查找元素
nums = [1,2,3]
if 2 in nums :
print('2 is in list!')
用in操作符在列表中查找一个元素
not in 表示不在列表中
-
其他有用的方法
append(item)
index(item)
insert(index, item)
sort()
remove(item)
reverse()
等等
-
del语句
nums = [1,2,3]
del nums[1]
print(nums)
用del语句,按索引删除元素
-
min和max函数
nums = [1,2,3]
print(min(nums))
print(max(nums))
min和max两个内置函数支持序列(比如列表)作为参数,非常方便
-
复制列表
#没有达到复制效果!
list1 = [1,2,3]
list2 = list1
#一个复制的例子
list1 = [1,2,3]
list2 = []
for item in list1 :
list2.append(item)
#更优雅的
list1 = [1,2,3]
list2 = [] + list1
直接变量赋值是不正确的
-
列表解析 list comprehension
列表解析是一种简洁的表达方式,通过遍历现有列表的元素来创建新列表
#复制列表
list1 = [1,2,3,4,5]
list2 = [item for item in list1]
#其中
# item是结果表达式
# item in list1是迭代表达式
print(list2)
#求第一个列表每个元素的平方数
list1 = [1,2,3,4,5]
list2 = [item**2 for item in list1]
#求第一个列表每个字符的长度
names = ['Alice', 'Bob', 'Claire']
lens = [len(item) for item in names]
print(lens)
-
带有if的列表解析
#复制列表中小于5的数到新列表
list1 = [1,2,3,4,5]
list2 = [item for item in list1 if item < 5]
print(list2)
#复制名字长度大于3的字符到新列表
names = ['Alice', 'Bob', 'Claire']
names2 = [item for item in names if len(item) > 3]
print(names2)
if子句放在末尾,充当过滤器
-
二维列表
matrix = [ [1,2,3],
[4,5,6],
[7,8,9] ]
print(matrix[0])
print(matrix[0][1])
处理元素的方法与C和java看起来类似
-
元组
my_tuple=(1,2,3)
print(my_tuple)
for item in my_tuple:
print(item)
my_list = list(my_tuple)
my_tuple = tuple(my_list)
元组是不可改变的序列。用圆括号来定义。
除了会改变内容的操作(append、remove、sort等等)外,元组支持所有与列表相同的操作,比如下标索引,各种方法,内置函数,切片表达式,in 和 + *操作符。
元组的性能会比列表好,可以和列表互相转换(使用list和tuple函数)
下一篇:python基础05——字符串