列表操作

列表list:打了激素的数组

数组是只能存储同一种数据类型的结构;

元组 tuple

数组: scores[43] = [12, 12.0, “hello”]

定义列表[](列表中可以包括int,float,str,元组,列表。。。)

a = [1, 1.0, “westos”, (1,2,3,4), [1,2,3,4]]

[1, 1.0, ‘westos’, (1, 2, 3, 4), [1, 2, 3, 4]]

定义元组()(元组中可以包括int,float,str,元组,列表。。。)

t = (1, 1.0, “westos”, (1,2,3,4), [1,2,3,4])

(1, 1.0, ‘westos’, (1, 2, 3, 4), [1, 2, 3, 4])

元组是不可变数据类型,不能修改元素;

列表是可变数据类型,可以修改元素;

分析列表的特性(与元组对比)

索引,切片,重复/连接,成员操作符

索引

正向索引

a[0]

反向索引

a[-1]

拿出列表最后一个元素, 最后一个元素是列表, 再拿出列表的第三个元素,如下 :

a[-1][2]

切片

去掉列表的第一个元素

a[1:]

逆序显示

a[::-1]

重复, 连接

a * 2

不建议这样连接两个列表,后面有效率更高的方法 ;

a+a1

成员操作符

列表的增删改查

allow_ip = [“172.25.254.1”,”172.25.254.3” ]

追加元素到列表的最后

allow_ip.append(“172.25.254.250”)

[‘172.25.254.1’, ‘172.25.254.3’, ‘172.25.254.250’]

增加元素到列表的指定位置

allow_ip.insert(0, “192.168.1.253”)

[‘192.168.1.253’, ‘172.25.254.1’, ‘172.25.254.4’]

增加多个元素到列表最后

allow_ip.extend([“172.25.254.45”])

[‘192.168.1.253’, ‘172.25.254.1’, ‘172.25.254.45’]

通过列表的索引,对列表某个索引值重新赋值;

allow_ip[0] = “192.168.1.1”

[‘192.168.1.1’, ‘172.25.254.1’, ‘172.25.254.3’, ‘172.25.254.26’,

‘172.25.254.250’, ‘172.25.254.45’, ‘172.25.56.21’]

buy = [“apple”, “computer”,”apple”]

统计某个元素在列表中出现的次数 ;

buy.count(“apple”)

找到某个值在列表中的索引值

buy.index(“computer”)

删除列表中遇到的第一个 value 值;

buy.remove(“apple”)

删除列表中第 i 个索引值;

del buy[0]

删除除了第一个元素之外的其他索引值

del buy[1:]

删除列表对象

del buy

删除指定索引对应的值,默认是最后一个元素 ;

li.pop()

删除列表的第一个索引 ;

li.pop(0)

其他的排序及逆转

排序,如果说都是数字,按照数字大小排序 ;

是字母的话,按照 ASCII 码来排序;

** 如何查看对应的 ASCII 码 ? ord(‘a’)

排序

li.sort()

逆转; li[::-1]

li.reverse()

列表练习

用户登录程序版本2:

用户名和密码分别保存在列表中;

用户登录时,判断该用户是否注册;

用户登录时,为防止黑客暴力破解, 仅有三次机会;

如果登录成功,显示登录成功(exit(), break).

知识点学习:

python中特有的while….else…语句

如果满足while后面的语句,执行while循环的程序, 如果不满足,执行else里面的程序.

提示: 用户名和密码一一对应users = [“user1”, “user2”, “user3”]

passwords = [“123”, “456”, “789”]

参考代码:

4 users = [‘user1’,’user2’,’user3’]

5 passwd = [‘123’,’456’,’789’]

6 trycount = 0

7 while trycount<3:

8 inname = raw_input(“name:”)

9 if not inname in users:

10 print “用户未注册”

11 break

12 inpasswd = raw_input(“passwd:”)

13 index = users.index(inname)

14 if inpasswd == passwd[index]:

15 print “登陆成功”

16 break

17 else:

18 print “登录失败”

19 trycount += 1

20 else:

21 print “超过三次”

列表构建栈和队列数据结构

栈是先进后出(LIFO-first in last out);

类似于往箱子里面放书;

代码实现如下: (实际应用中这样太麻烦,将来会用类实现)

1 #!/usr/bin/env python

2 #coding:utf-8

3

4 stack = []

5 info = ”’

6 栈操作

7 1)入栈

8 2)出栈

9 3)栈长度

10 4)查看栈

11 5)退出

12 请输入你的选择:”’

13

14 while True:

15 choice = raw_input(info).strip()

16 if choice == “1”:

17 print “入栈操作”.center(40,”*”)

18 value = raw_input(‘入栈元素:’)

19 stack.append(value)

20 print “元素%s入栈成功” %(value)

21 elif choice == “2”:

22 print “出栈操作”.center(40,”*”)

23 if not stack:

24 print “栈为空”

25 else:

26 item = stack.pop()

27 print “元素%s出栈成功” %(item)

28 elif choice == “3”:

29 print “%d” %(len(stack))

30 elif choice == “4”:

31 print “查看栈元素”.center(40,”*”)

32 if not stack:

33 print “栈为空”

34 for i in stack:

35 print i,

36 else:

37 exit()

队列

队列是先进先出(FIFO):

类似于去餐厅买饭排队;

“”“

queue = [1, 2,3]

队列操作

1). 入队:enQueue

2). 出队:

3). 查看队列

4). 退出

“”“

代码同栈,只需更改如下即可:

26 item = queue.remove(queue[0])

列表内置方法

cmp,min,max,zip, enumerate

卡号由 6 位组成, 前 3 位是 610 , 后面的依次是 001, 002,

1 #!/usr/bin/env python

2 #coding:utf-8

3 cardids = []

4 for i in range(1,101):

5 a = “610%.3d” %(i)

6 cardids.append(a)

7 for i,j in enumerate(cardids):

8 if i%10 == 0:

9 print

10 print j,

11 else:

12 print j,

你可能感兴趣的:(列表操作)