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


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循环结束后执行(缩进不同)

结果:

teacher
teacher is a very good job.
doctor
doctor is a very good job.
editor
editor is a very good job.

over

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

代码:

from collections import Iterable

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

结果:

False
True
True
True
True

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

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

结果:

1 1 3
2 4 4
3 9 3

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

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

代码:

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

结果:

0 A
1 B
2 C

创建数值列表

1.函数range()的使用

代码:

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

结果:

0
1
2
3
4

代码:

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

结果:

0
2
4
6
8
10
  • 使用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]
1
100
385

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])

结果:

1
100

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

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字符

你可能感兴趣的:(Python)