Python学习笔记(3)-操作列表

来源:互联网 发布:智慧办公软件下载 编辑:程序博客网 时间:2024/05/17 08:16

for循环

注意:只要是迭代Iterable对象,都可被for ...in...循环,例如列表,元组,字典,字符串

1.for循环的简答使用:

代码:

jobs = ['teacher','doctor','editor']for job in jobs:                                     #注意此处的冒号    print(job)                                        #循环体要缩进(4个空格)    print(job + ' is a very good job.')               #相同缩进的代码为统一代码块                                                      #不同语句块最好隔一空行print('\nover') #for循环结束后执行(缩进不同)

结果:

teacherteacher is a very good job.doctordoctor is a very good job.editoreditor is a very good job.over

tip:如何判断是否是迭代对象,可使用collections模块的Iterable类型

代码:

from collections import Iterableprint(isinstance(123, Iterable))  # 整数不是可迭代对象print(isinstance('abc', Iterable))print(isinstance(['a', 'b'], Iterable))print(isinstance(('a', 3), Iterable))print(isinstance({'name': 'Tom', 'age': 18}, Iterable))

结果:

FalseTrueTrueTrueTrue

2.for循环还可引用多个变量

for x, y, z in [(1, 1, 3), (2, 4, 4), (3, 9, 3)]:    print(x, y, z)

结果:

1 1 32 4 43 9 3

之后的字典即可用这种方法访问

3.对list实现下标和值的循环,可用enumerate函数,可和之后的for循环访问字典对比理解。

代码:

for index, value in enumerate(['A', 'B', 'C']):  # 类似dict.items    print(index, value)

结果:

0 A1 B2 C

创建数值列表

1.函数range()的使用

代码:

for number in range(0,5): #从第一个参数开始,到第二个参数前结束 等同于 range(5)    print(number)

结果:

01234

代码:

for number in range(0,11,2): #从第一个参数开始,到第二个参数前结束,每次循环+2    print(number)

结果:

0246810
  • 使用range()创建数字列表,通过list()函数
  • 数字简单的统计计算min() max() sum()

代码:

numbers = list(range(2,12,4))print(numbers)

结果:

[2, 6, 10]

e.g. 创建列表,包含前10个数的平方
代码:

numbers = []for number in range(1,11):    numbers.append(number**2)print(numbers)print(min(numbers))#最小值print(max(numbers))#最大值print(sum(numbers))#和

结果:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]1100385

2.列表解析

代码:

result = [x ** 2 for x in range(1, 11) if x % 2 == 0]print(result)

结果:

[4, 16, 36, 64, 100]

还可使用双层循环

代码:

result = [m + n for m in 'ABC' for n in 'DEF']print(result)

结果:

['AD', 'AE', 'AF', 'BD', 'BE', 'BF', 'CD', 'CE', 'CF']

切片

切片即列表的部分元素,如下
代码:

gourds = ['dawa','erwa','sanwa','siwa','wuwa','liuwa','qiwa']print(gourds[0:0])#从下标0开始,到下标0前结束print(gourds[1:2])#从下标1开始,到下标2前结束print(gourds[1:-1])#从下标1开始,到倒数第一个前结束print(gourds[:-2])#从开始,到倒数第二个前结束print(gourds[1:])#从下标1开始,到结束print(gourds[:5:2]) #从下标0开始,到5前结束,每2个取一次值

结果:

[]['erwa']['erwa', 'sanwa', 'siwa', 'wuwa', 'liuwa']['dawa', 'erwa', 'sanwa', 'siwa', 'wuwa']['erwa', 'sanwa', 'siwa', 'wuwa', 'liuwa', 'qiwa']['dawa', 'sanwa', 'wuwa']

遍历切片同遍历列表相同,可用for循环

复制列表的方法

代码:

gourds = ['dawa','erwa','sanwa','siwa','wuwa','liuwa','qiwa']fake_gourds = gourds[:]#使用切片的形式复制,从0开始到末尾gourds.append('yeye')#原列表和新列表添加不同字段打印fake_gourds.append('shejing')print(gourds)print(fake_gourds)

结果:

['dawa', 'erwa', 'sanwa', 'siwa', 'wuwa', 'liuwa', 'qiwa', 'yeye']['dawa', 'erwa', 'sanwa', 'siwa', 'wuwa', 'liuwa', 'qiwa', 'shejing']

元组和字符串也可以有切片,用法相同,字符串可用切片来截取字符,类似java语言的substring函数等。

元组(tuple)

列表适合存储在程序运行期间可能变化的数据,可修改,元组与列表相同,但使用圆括号,且元组的元素值(实际上是元素值的指向)不能修改.
代码:

RMB = (1,5,10,20,50,100)print(RMB[0])print(RMB[-1])

结果:

1100

元组的元素值不能直接修改
代码:

RMB[0] =3

结果:

TypeError: 'tuple' object does not support item assignment

但是可以直接重新给整个元组赋值
代码:

RMB = (1,5,10,20,50,100)RMB = (900,1)print(RMB)

结果:

(900, 1)

遍历元组同遍历列表一样,用for循环

注意:
定义只有一个数字的元组的时候不能写成RMB = (100),这样写容易与数学符号扩号混淆,会按照括号处理,所以定义一个数字的元组的时候加上,(逗号)例如:RMB = (100,)

代码:

RMB = (100,)print(RMB)

结果:

(100,)

结果中也会带上逗号

如果元组中含有list,list的值可以更改,例如:
代码:

RMB = (100, ['aaa', 'bbb'])print(RMB)RMB[1][0] = 'ccc'  #元组里的list指向没有变,变得是所指向的list里存的值RMB[1][1] = 'ddd'print(RMB)

结果:

(100, ['aaa', 'bbb'])(100, ['ccc', 'ddd'])

代码格式

  • 每级缩进都用4个空格
  • 每行建议不超过80字符
0 0