列表操作

列表list:打了激素的数组
数组是只能存储同一种数据类型的结构;
元组 tuple
数组: scores[43] = [12, 12.0, “hello”]

# 定义列表[](列表中可以包括intfloatstr,元组,列表。。。)
a = [1, 1.0, "westos", (1,2,3,4), [1,2,3,4]]
print a
[1, 1.0, 'westos', (1, 2, 3, 4), [1, 2, 3, 4]]

# 定义元组()(元组中可以包括intfloatstr,元组,列表。。。)
t = (1, 1.0, "westos", (1,2,3,4), [1,2,3,4])
print t
(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

这里写图片描述

成员操作符
print a
print 13 in a
print 13 not in a

这里写图片描述

列表的增删改查

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"
print allow_ip
['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,

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值