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 循环和列表的主要内容,如果未能解决你的问题,请参考以下文章

笨办法32循环和列表

常用python日期日志获取内容循环的代码片段

如何使用引导程序和 for 循环在 django 中创建电影片段?

在片段中使用列表视图

练习32--循环和列表

20170924习题