Python 学习(1):基础知识点

来源:互联网 发布:神反转的故事知乎 编辑:程序博客网 时间:2024/05/22 03:06

忙忙碌碌的研究生生活开始了,因为学习需求,学习一下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)

输出结果

aabbccdd

通过代码缩进关系表示一个循环包含的内容


数值列表

创建

for value in range(1,5):    print(value)

输出结果

12345

所以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)

输出结果

bbccdd

复制

如果直接执行test2 = test这样的语句,两个变量名会指向同一个列表,修改其中的一个列表中的元素会影响另一个列表的元素(其实就是同一个列表)。如下代码

test = ['aa','bb','cc','dd','ee']test2 = testprint(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)