忙忙碌碌的研究生生活开始了,因为学习需求,学习一下Python。接下来的几天会很快的刷一下语法。这是第一篇。
列表
列表由一系列按特定顺序排列的元素组成。
基本操作
定义方式:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
访问方式
print(bicycles)
输出结果
['trek', 'cannondale', 'redline', 'specialized']
访问列表内部元素(下标访问,从零开始)
print(bicycles[0])
支持倒数访问
print(bicycles[-1]) # 访问最后一个元素
print(bicycles[-2]) # 访问倒数第二个元素
添加元素
bicycles.append('test')
插入元素
bicycles.insert(0, 'test2') # ‘0’表示插在列表开头,后面的元素下标依次向后推一个。
删除元素
del bicycles[1] # 删除列表的第二的元素
pop()
方法pop()可删除列表末尾的元素,并让你能够接着使用它。弹出(pop)源自这样的类
比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。
testpop = ['aa','bb','cc','dd']
print(testpop)
ret_pop = testpop.pop()
print(testpop)
print(ret_pop)
结果输出
['aa', 'bb', 'cc', 'dd']
['aa', 'bb', 'cc']
dd
通过传入索引可以弹出对应的元素
ret_pop = testpop.pop(2)
print(testpop)
print(ret_pop)
结果输出
['aa', 'bb', 'cc', 'dd']
['aa', 'bb', 'dd']
cc
通过内容删除元素
testpop.remove('cc')
组织列表
排序
testpop = ['aa','dd','bb','cc']
testpop.sort()
print(testpop)
默认回根据ASCII码排序(从小到大)。reverse=True
参数可以改变方向。sorted(testpop)
会把排序结果返回,并不会改变原来的列表。也可称之为临时排序。
确定列表长度
通过len()
函数返回长度
testpop = ['aa','dd','bb','cc']
print(len(testpop))
操作列表
循环遍历
testpop = ['aa','bb','cc','dd']
for element in testpop:
print(element)
输出结果
aa
bb
cc
dd
通过代码缩进关系表示一个循环包含的内容
数值列表
创建
for value in range(1,5):
print(value)
输出结果
1
2
3
4
5
所以range(),生成的值包含开头不包含结尾。
numbers = list(range(1,6))
print(numbers)
可以创建一个数字列表。
另外range()可以传入第三个参数来控制步子长,即数字的间隔
print(list(range(1,20,3)))
输出
[1, 4, 7, 10, 13, 16, 19]
统计操作
min()
、max()
、sum()
三个函数可以对数值列表进行取小、取大、求和操作。
列表解析
squares = [value**2 for value in range(1,11)]
print(squares)
输出
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
要使用这种语法,首先指定一个描述性的列表名,squares;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式为value**2,它计算平方值。接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。
切片操作
截取
切片操作可以简单快速的提取列表中的元素。类似于Matlab中的语法操作。
test = ['aa','bb','cc','dd','ee']
print(test[0:3])
输出结果
['aa', 'bb', 'cc']
值得注意的是,类似于range()操作。切片的元素包含开头不包含索引。也就是说[0:3]切出的元素是0,1,2
三个元素
[a:b]可以省略参数,[:3]省略第一个参数表示从开头截取,[2:]省略第二个元素表示截取到结尾。同事也支持传入负数
表示列表从后向前的索引序号。
遍历
test = ['aa','bb','cc','dd','ee']
for element in test[1:4]:
print(element)
输出结果
bb
cc
dd
复制
如果直接执行test2 = test
这样的语句,两个变量名会指向同一个列表,修改其中的一个列表中的元素会影响另一个列表的元素(其实就是同一个列表)。如下代码
test = ['aa','bb','cc','dd','ee']
test2 = test
print(test)
print(test2)
test2[0] = 'AA'
print(test)
print(test2)
输出结果
['aa', 'bb', 'cc', 'dd', 'ee']
['aa', 'bb', 'cc', 'dd', 'ee']
['AA', 'bb', 'cc', 'dd', 'ee']
['AA', 'bb', 'cc', 'dd', 'ee']
这样并不是真正意义上的复制
复制可以借助切片的方式来操作。并且可以控制复制的范围。同时[:]省略前后=参数表示全部复制。
test = ['aa','bb','cc','dd','ee']
test2 = test[:]
print(test)
print(test2)
test2[0] = 'AA'
print(test)
print(test2)
输出结果
['aa', 'bb', 'cc', 'dd', 'ee']
['aa', 'bb', 'cc', 'dd', 'ee']
['aa', 'bb', 'cc', 'dd', 'ee']
['AA', 'bb', 'cc', 'dd', 'ee']
可以看到这样的操作后,两个变量名对应着两个列表,修改其中一个不会影响另一个列表的内容。
元组
列表的元素内容可以随时修改,但是元组的内容无法修改
定义
test = ('aa','bb','cc','dd','ee')
test[0] = 'AA' # 错误代码 内容无法修改
遍历
方法和列表相同
修改元素
元组的内容无法直接修改,但是可以通过重新赋值的方式改变
test = ('aa','bb','cc','dd','ee')
print(test)
test = ('AA','bb','cc','dd','ee')
print(test)