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

待我称王封你为后i 2022-07-14 08:58 394阅读 0赞

for循环

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

1.for循环的简答使用:

代码:

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

结果:

  1. teacher
  2. teacher is a very good job.
  3. doctor
  4. doctor is a very good job.
  5. editor
  6. editor is a very good job.
  7. over

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

代码:

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

结果:

  1. False
  2. True
  3. True
  4. True
  5. True

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

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

结果:

  1. 1 1 3
  2. 2 4 4
  3. 3 9 3

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

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

代码:

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

结果:

  1. 0 A
  2. 1 B
  3. 2 C

创建数值列表

1.函数range()的使用

代码:

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

结果:

  1. 0
  2. 1
  3. 2
  4. 3
  5. 4

代码:

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

结果:

  1. 0
  2. 2
  3. 4
  4. 6
  5. 8
  6. 10
  • 使用range()创建数字列表,通过list()函数
  • 数字简单的统计计算min() max() sum()

代码:

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

结果:

  1. [2, 6, 10]

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

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

结果:

  1. [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  2. 1
  3. 100
  4. 385

2.列表解析

代码:

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

结果:

  1. [4, 16, 36, 64, 100]

还可使用双层循环

代码:

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

结果:

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

切片

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

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

结果:

  1. []
  2. ['erwa']
  3. ['erwa', 'sanwa', 'siwa', 'wuwa', 'liuwa']
  4. ['dawa', 'erwa', 'sanwa', 'siwa', 'wuwa']
  5. ['erwa', 'sanwa', 'siwa', 'wuwa', 'liuwa', 'qiwa']
  6. ['dawa', 'sanwa', 'wuwa']

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

复制列表的方法

代码:

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

结果:

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

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

元组(tuple)

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

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

结果:

  1. 1
  2. 100

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

  1. RMB[0] =3

结果:

  1. TypeError: 'tuple' object does not support item assignment

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

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

结果:

  1. (900, 1)

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

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

代码:

  1. RMB = (100,)
  2. print(RMB)

结果:

  1. (100,)

结果中也会带上逗号

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

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

结果:

  1. (100, ['aaa', 'bbb'])
  2. (100, ['ccc', 'ddd'])

代码格式

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

发表评论

表情:
评论列表 (有 0 条评论,394人围观)

还没有评论,来说两句吧...

相关阅读