#2017-12-19 19:34:41 December Tuesday the 51 week, the 353 day
#python连载第十五篇~list列表
#列表定义,访问,索引,操作,切片
列表就是用中括号包围、逗号隔开的任何东西(称作元素element),没有数量,长度限制:
用中括号[]加序号访问列表元素的方法就是索引index,索引就是列表元素所在的位置,索引从0 而不是1 开始,第二个元素索引为1,第三个索引为2,依次类推
#python连载第十五篇~list列表
#访问list中的元素
list1 = [1, '2', "3", "abc", "i love you", "最近如何,亲?"]
#这个列表中有6个元素,但是一般我们从0开始数,一直数到5。
#也就是list1[0]的元素内容就是数字1,list1[5]元素内容就是"最近如何,亲?"
list1 = [1, '2', "3", "abc", "i love you", "最近如何,亲?"]
#可以用print函数直接输出这个列表
print("该列表所有元素为:",list1)
#访问第一个元素
print("列表第一个元素为:",list1[0])
#访问第二个元素
print("列表第二个元素为:",list1[1])
#访问第六个元素
print("列表第六个元素为:",list1[5])
#也可以用负数来调取列表中的元素。
#list1[-1]表示列表中的最后一个元素。
print("列表最后一个元素为:",list1[-1])
#list1[-5]表示倒数第5个元素
print("列表倒数第5个元素:",list1[-5])
#也可以用for循环输出列表内容
#for循环最擅长和列表配合搞事情
for i in list1:
print(i)
#for循环做的事情其实就是遍历列表中的每一项,每次循环都把当前项赋值给一个变量(这里是i)并输出,直到列表结束
#python连载第十五篇~list列表
#修改,添加
#修改列表中的元素
#只需要直接给那个元素赋值就可以了:
#给第一个元素赋值为512
list1[0] = 512
#赋值之后的列表内容
print("现在list1变成了",list1)
#向list中添加元素
#append方法可以在列表最后面增加元素。
list1 = [1, '2', "3", "abc", "i love you", "最近如何,亲?"]
#python中append方法的使用技巧是在列表后面添加英语中的句号,然后添加append方法
list1.append('最近很好呢~')
print("向list列表中添加元素后:",list1)
#python连载第十五篇~list列表
各种删除方法
#del()方法删除list中的元素,被删除的元素无法再被使用
list1 = [1, '2', "3", "abc", "i love you", "最近如何,亲?"]
#删除第一个元素
del list1[0]
print("删除列表中第一个元素后:",list1)
#pop()方法删除list中的元素,被删除的元素还可以被使用
list1 = [1, '2', "3", "abc", "i love you", "最近如何,亲?"]
poped_list = list1.pop() #删除列表最后一个元素
print("删除最后一个元素后的列表:",list1)
print("被删除的元素:",poped_list)
#弹出(删除)列表中的任意元素,只需在pop()中加入数字
list1 = [1, '2', "3", "abc", "i love you", "最近如何,亲?"]
poped_list = list1.pop(2) #删除列表最后一个元素
print("删除第三个元素后的列表:",list1)
print("被删除的第三个元素:",poped_list)
#直接删除列表中的元素
list1 = [1, '2', "3", "abc", "i love you", "最近如何,亲?"]
love = 'i love you'
list1.remove(love)
print("删除指定元素后的列表:",list1)
#被删除的元素还可以继续使用
print("被删除的元素:",love)
切片的含义就是从列表许多元素中取出你想要的部分,类似屠夫用刀从牛肉中随意剁出一块出来的感觉,具体的方法就是:
在中括号[]内提供一对合适数字,用:分割。冒号前的数表示切片的开始位置,冒号后的数字表示切片到哪里结束。
注意,开始位置包含在切片中,而结束位置不包括。
列表中第一个元素位置是0,第二个元素位置是1,以此类推
#python连载第十五篇~list列表
#列表的切片读取
list1 = [1, '2', "3", "abc", "i love you", "最近如何,亲?"]
#取出列表中的第3个,第四个,元素,不包含第五个元素
print("列表第3,4个元素是:",list1[2:4])
#如果不指定第一个数,切片就从列表第一个元素开始
print("列表第1,2,3,4个元素是:",list1[:4])
#如果不指定第二个数,就一直到最后一个元素结束
print("列表第3个元素以后的内容是:",list1[2:])
#不指定,则返回列表所有元素
print("列表所有元素是:",list1[:])
#同索引一样,切片中的数字也可以使用负数。比如
print("列表第3个到倒数第二个元素:",list1[2:-2])
#遍历切片
print("前三个元素为:")
for list1_1 in list1[:3]:
print(list1_1)
#python连载第十五篇~list列表
列表排序
#下面列表中的元素是我在德国留学时候的室友,朋友
list2 = ['johannes', 'romi', 'andre','martin']
#列表永久按照字母表顺序排序,排序后不可撤销
list2.sort()
print("正序列表内容:",list2)
#向sort()方法传递参数reverse=True可以让列表内容按照字母反方向顺序排序
list2.sort(reverse=True)
print("反序列表内容:",list2)
#还可以用sorted()方法对列表临时排序
list2 = ['johannes', 'romi', 'andre','martin']
print("这是原始列表")
print("原始列表:",list2)
print("这是临时排序列表")
print("临时正序列表:",sorted(list2))
print("原始列表保持不变")
print("原始列表:",list2)
#倒着打印列表
list2 = ['johannes', 'romi', 'andre','martin']
list2.reverse() #反转方法
print("反转列表:",list2)
#确定列表长度
list2 = ['johannes', 'romi', 'andre','martin']
print("列表list2元素个数为:")
print(len(list2))
#python连载第十五篇~list列表
列表中插入,复制
#使用方法insert()可在列表的任何位置添加新元素。
#只需要指定新元素的索引(位置)和值。在插入的位置右侧元素自动右移一个位置
list1 = [1, '2', "3", "abc", "i love you", "最近如何,亲?"]
list1.insert(4, 'Schatz德语宝贝的意思')
print(list1)
#复制列表
list1 = ['汉语', '英语']
list2 = list1
list3 = list1[:] #[:]代表列表所有内容
print("新名字:list2,旧列表:",list2)
print("新名字:list3,旧列表:",list3)
#python连载第十五篇~list列表
列表加法,乘法,嵌套
#列表可以做加法
list1 = [1, '2', "3", "abc", "i love you", "最近如何,亲?"]
list2 = ['johannes', 'romi', 'andre','martin']
list3 = list1 + list2
print("加法列表结果:",list3)
#列表还可以做乘法
list2 = ['johannes', 'romi', 'andre','martin']
list4 = list2 * 2
print("乘法列表结果:",list4)
#列表嵌套,列表里面的元素还是列表
list1 = [1, '2', ]
list2 = ['johannes', 'romi']
list5 = [list1, list2]
print("列表嵌套结果:",list5)
2017-12-23 15:14:10 December Saturday the 51 week, the 357 day
#python连载第十五篇~list列表
数字列表的玩法
#for循环做的事情其实就是遍历一个列表中的每一项,
#每次循环都把当前项赋值给一个变量(这里是i)并输出,直到列表结束
#使用函数(函数和方法是一个意思,两者等价)range()创建一列数字
for i in range(1, 5):
print(i)
#创建数值列表
numbers = list(range(1,5))
print("列表嵌套结果:",numbers)
#指定步长求偶数,第一个2是起点,11是终点,最后一个2是数字的间隔,步长
even_numbers = list(range(2,11,2))
print("2到10之间的偶数:",even_numbers)
#平方运算,在Python中,两个星号(**)表示乘方运算。
#列表包含前10个整数的平方
squares = [] #建立空列表
for value in range(1,11): #for循环输出1到10的数字
square = value**2 #给每个数字做平方运算
squares.append(square) #把每个数字依次添加到空列表里面
print("1到10的平方分别是:",squares) #打印出最终的列表
numbers = list(range(1,5))
print("列表元素内容为",numbers)
#求数字列表最小值
min_numbers = min(numbers)
print("列表最小元素为:", min_numbers)
#求数字列表最大值
max_numbers = max(numbers)
print("列表最大元素为:",max_numbers)
#求数字列表元素之和
sum_numbers = sum(numbers)
print("列表数字元素之和为:",sum_numbers)
2017-12-23 15:13:58 December Saturday the 51 week, the 357 day
#python连载第十五篇~list列表
常见系统错误整理
#索引错误:列表索引元素号码要在元素里面,如果超出电脑会报错
list2 = ['johannes', 'romi', 'andre','martin']
print(list2[4])
电脑报错如下:
Traceback (most recent call last): #不用看,没啥意义
File "D:\Sublime_work_D\TF\TF_test.py", line 2, in
print(list2[4]) #错误代码所在位置行
IndexError: list index out of range #索引错误:超出列表索引范围
[Finished in 1.0s]
#语法错误:
for i in range(1, 10)
print(i)
File "D:\Sublime_work_D\TF\TF_test.py", line 1
for i in range(1, 10) #指出错误在for循环的末尾,缺个分号
^
SyntaxError: invalid syntax #语法错误:无效语法
[Finished in 0.8s]
#缩进错误举例
#没有缩进
for i in range(1, 10):
print(i)
运行后无法通过电脑检测,电脑返回如下:
File "D:\Sublime_work_D\TF\TF_test.py", line 2 #文件在电脑中的位置
print(i) #错误所在位置
^
IndentationError: expected an indented block #缩进错误期望一个缩进模块
[Finished in 1.8s with exit code 1]
#不必要的缩进
list2 = ['johannes', 'romi', 'andre','martin']
print(list2[4])
File "D:\Sublime_work_D\TF\TF_test.py", line 3
print(list2[4])
^
IndentationError: unexpected indent #缩进错误:超出预期的缩进,没必要缩进
[Finished in 0.8s]
建议大家积累常见错误,然后定期复习,避免重复犯错,对英语有压力的同学可以记住错误中的常见词,以后碰到新错误就能看懂电脑报错原因。把这个错误放进文件:python_problems.py
这句话是关键:IndexError: list index out of range,说明了错误原因是索引错误:IndexError
最后关于列表还有大量操作,这里只是抛砖引玉,以后碰到了新用法,自己临时学习就行,做编程,最重要的品质就是学习能力和终生学习的意识。
一旦放弃学习,很快就被时代抛弃
家庭作业:
用range方法和for循环实现1到10的平方
squares = [value**2 for value in range(1,11)]
print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[Finished in 1.7s]