ex32 循环和列表
Posted 丁头零零
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ex32 循环和列表相关的知识,希望对你有一定的参考价值。
1、列表的所有基本功能操作。
2、通过for循环能够实现整个列表所有元素的打印。
3、range函数:range(stop) ;range(start, stop[, step])
range函数是一个用来创建算数级数序列的通用函数,返回一个左闭右开的序列数。
以下是练习中的代码:
1 #-*- coding: UTF-8 -*- 2 the_count = [1,2,3,4,5] 3 fruits = [‘apple‘,‘orange‘,‘pears‘,‘apricots‘] 4 change = [1,‘pennies‘,2,‘dimes‘,‘3‘,‘quarters‘] 5 6 for number in the_count: 7 print "This is count %d" % number 8 9 for fruit in fruits: 10 print "A fruit of type:%s" % fruit 11 12 for i in change: 13 print "I got %r" %i 14 15 elements = [] 16 17 for i in range (0,6):#包括前面不包括后面 18 print "Adding %d to the list." %i 19 elements.append(i) 20 21 22 for i in elements: 23 print "Element was :%d" % i
下面是之前关于List操作的笔记。因为这个是Pytho3,所以在print后面加上了()。
六、列表的使用
1、列表的基本格式
1 names=["a","b","c","d","e","b"]
2、对于列表的对象查询
1 print(names[3])#调用列表中的对象,从左到右依次为0,1,2,3... 2 print(names[1:3])#切片,从左边开始的话,顾头不顾尾 3 print(names[-1])#切片,调用最后一位,从右开始数 4 print(names[-3:-1])#切片,按照从最后开始数的方法,但是切片还是从左往右并且顾头不顾尾的。 5 print(names[-3:])#如果要取最后一位,那么:后边应该不写东西 6 print(names[:2])#同理,如果说是从第一个开始,前面是0,也可以不写。 7 print(names[0:-1:2])#跳着切片,最后一个2为步长
3、对于列表的一些拓展功能的使用
1)增加元素
1 names.append("F")#添加元素到后边 2 names.insert(1,"F")#添加元素到指定位置,想到那个位置就写那个位置的下标
2)更改元素
1 names[1]="B" #更改对应位置上的元素
3)删除元素
1 names.remove("c")#这种方式直接写要删除对象的内容 2 del names[2]#这个就是指定位置下标来删 3 names.pop(2) #pop和del起的作用其实基本是一样的,不过要是默认不写下标的话就会删除最后一个对象。
4)查询元素
1 print (names.index("c"))#对于已知内容的对象,打印其位置。 2 print(names.count("b"))#打印相同对象在列表中出现的次数
5)其他的一些
1 names.clear()#清空整个表格 2 names.reverse()#反转整个表格 3 names.sort()#排序,按照ASCII码的顺序进行排列 4 names2=["1","2","3"] 5 names.extend(names2)#拓展表格 6 print(names)
6)关于list_.copy()的一些用法
a.在只有一级列表的情况下,直接用copy是能够实现完全copy的,并且当names列表当中有元素变化时,names2是不会变化的。
1 names=["a","b","c","d","e","b"] 2 names2=names.copy() 3 print(names) 4 print(names2) 5 6 #输出结果: 7 [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘b‘] 8 [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘b‘]
b.在这里有两级列表,然后更改原始列表中的第一级的一个元素,names2当中并不会发生变化。
names=["a","b","c",[1,2,3],"d","e","b"] names2=names.copy() names[1]="B" print(names) print(names2) #输出结果: [‘a‘, ‘B‘, ‘c‘, [1, 2, 3], ‘d‘, ‘e‘, ‘b‘] [‘a‘, ‘b‘, ‘c‘, [1, 2, 3], ‘d‘, ‘e‘, ‘b‘]
c、但是看下边,当二级列表中的元素发生改变时,names2也变了。
names=["a","b","c",[1,2,3],"d","e","b"] names2=names.copy() names[1]="B" names[3][1]="贰" print(names) print(names2) #输出结果: [‘a‘, ‘B‘, ‘c‘, [1, ‘贰‘, 3], ‘d‘, ‘e‘, ‘b‘] [‘a‘, ‘b‘, ‘c‘, [1, ‘贰‘, 3], ‘d‘, ‘e‘, ‘b‘]
d、如果不使用copy,直接用前面的赋值:那么最后连最浅的一层也复制不了。
1 names=["a","b","c",[1,2,3],"d","e","b"] 2 names2=names 3 names[1]="B" 4 names[3][1]="贰" 5 print(names) 6 print(names2) 7 8 #输出结果: 9 [‘a‘, ‘B‘, ‘c‘, [1, ‘贰‘, 3], ‘d‘, ‘e‘, ‘b‘] 10 [‘a‘, ‘B‘, ‘c‘, [1, ‘贰‘, 3], ‘d‘, ‘e‘, ‘b‘]
e、上面的copy情况呢,就是所谓的浅copy,如果需要进行彻底的deepcopy,就需要调用copy模块。
1 import copy 2 names=["a","b","c",[1,2,3],"d","e","b"] 3 names2=copy.deepcopy(names) 4 names[1]="B" 5 names[3][1]="贰" 6 print(names) 7 print(names2) 8 9 #输出结果: 10 [‘a‘, ‘B‘, ‘c‘, [1, ‘贰‘, 3], ‘d‘, ‘e‘, ‘b‘] 11 [‘a‘, ‘b‘, ‘c‘, [1, 2, 3], ‘d‘, ‘e‘, ‘b‘]
但是一般来说这种deepcopy不建议常用,因为毕竟有的时候有的列表动辄上万的数据量,如果完全复制一份,则会白白占据大量的空间,没必要。
f.关于浅copy的应用,这里举一个例子,但是事先说一下,在实际生活中不是用这种方法来弄的。
可以利用浅copy事先如下功能:
创立一个多个人的共同账户,当一个账户的余额有变动时,其余的账户也跟着变动。
View Code
g、关于列表的循环
1 names=["a","b","c","d","e","b"] 2 for i in names: 3 print(i) 4 5 #输出结果: 6 a 7 b 8 c 9 d 10 e 11 b
以上是关于ex32 循环和列表的主要内容,如果未能解决你的问题,请参考以下文章