Python之列表

列表:打了激素的数组

列表是只能存储一种数据结构的数组列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

数组: scores[43] = [12, 12.0, "hello"]
元组tuple

定义列表
li = [1, 1.0, "westos", (1,2,3,4), [1,2,3,4]]
print li


# 定义元组
t = (1, 1.0, "westos", (1,2,3,4), [1,2,3,4])
print t


元组是不可变数据类型,不能修改元素;
#t[0] = 11
# 列表是可变数据类型,可以修改元素;
li[0] = 13

分析列表的特性

print li

# 正向索引

li[0]

# 反向索引

li[-1]


# 拿出列表最后一个元素, 最后一个元素是列表, 再拿出列表的第三个元素,如下:
li[-1][2]



切片

li
# 去掉列表的第一个元素
li[1:]
# 逆序显示
li[::-1]



重复 连接

# 不建议这样连接两个列表,后面有效率更高的方法;
li1 = ["westos", "new year"]
li+li1



成员操作符

print li
print 13 in li
print 13 not in li



列表的增删改查

ip白名单
allow_ip = ["172.25.254.1","172.25.254.3", "172.25.254.26" ]
print "追加元素到列表的最后:"
allow_ip.append("172.25.254.250")
print allow_ip
print


print "增加元素到列表的指定位置:"
allow_ip.insert(0, "192.168.1.253")
print allow_ip
print


# iterable代表可迭代的;
# 目前学习的可迭代对象有: str, list, tuple
print "增加多个元素到列表最后:"
allow_ip.extend(["172.25.254.45", "172.25.56.21"])
print allow_ip



通过列表的索引,对列表某个索引值重新赋值;
allow_ip[0] = "192.168.1.1"
print allow_ip



buy = ["apple", "computer","apple"]
# 统计某个元素在列表中出现的次数;
print buy.count("apple")
# 找到某个值在列表中的索引值
print buy.index("computer")


删除列表中遇到的第一个value值;
buy.remove("apple")
print buy


# 删除列表中第i个索引值;
del buy[0]
print buy


# 删除除了第一个元素之外的其他索引值
del buy[1:]
# 删除列表对象
del buy



li = [1,2,45,23,21, 45]
# 删除指定索引对应的值,默认是最后一个元素;
li.pop()
print li


# 删除列表的第一个索引;
li.pop(0)
li



其他的排序及其逆转

# 排序,如果说都是数字,按照数字大小排序;
# 是字母的话,按照ASCII码来排序;
# **** 如何查看对应的ASCII码? ord('a')
li = [12, 34, 56, 8]
li.sort()
print li


# 逆转; li[::-1]
li.reverse()
print li



列表内置方法
cmp
min, max
zip
enumerate


列表练习
用户登录程序版本2:
用户名和密码分别保存在列表中;
用户登录时,判断该用户是否注册;
用户登录时,为防止黑客暴力破解, 仅有三次机会;
如果登录成功,显示登录成功(exit(), break).
知识点学习:
python中特有的while....else...语句
如果满足while后面的语句,执行while循环的程序, 如果不满足,执行else里面的程序.
提示: 用户名和密码一一对应


参考代码

存储用户名的列表;
users = ["user1", "user2", "user3"]
# 存储用户密码的列表;
passwds = ["123", "456", "789"]
trycount = 0
while trycount<3:
inname = raw_input("name:")
# 判断用户是否存在列表中;
if not inname in users:
print "用户未注册"
break
inpasswd = raw_input("password:")
# 找到用户在用户列表中的索引值,可以间接找到该用户对应的密码;
index = users.index(inname)
if inpasswd == passwds[index]:
print "登录成功!!"
break
print "ok"
else:
print "登录失败!!"
trycount += 1
else:
print "超过三次"



测试结果:



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

栈是先进后出(LIFO-first in last out);
类似于往箱子里面放书;
代码实现如下: (实际应用中这样太麻烦,将来会用类实现)

#!/usr/bin/env python
#coding:utf-8
stack = []
info = """
栈操作
1). 入栈
2). 出栈
3). 栈长度
4). 查看栈
5). 退出
请输入你的选择:"""
# 死循环
while True:
choice = raw_input(info).strip()
if choice == "1":
print "入栈操作".center(40, "*")
value = raw_input("请输入入栈元素:")
stack.append(value)
print "元素%s入栈成功..." %(value)
elif choice == "2":
print "出栈操作".center(40, "*")
# if len(stack) == 0:
if not stack:
print "栈为空"
else:
item = stack.pop()
print "元素%s出栈成功...." %(item)
elif choice == "3":
print "查看栈长度".center(40, "*")
print len(stack)
elif choice == "4":
print "查看栈元素".center(40, "*")
if not stack:
print "栈为空"
for i in stack:
print i,
elif choice == "5":
exit()
else:

print "请输入正确的选择......"



测试结果如下:



队列
队列是先进先出(FIFO):
类似于去餐厅买饭排队;

"""
queue = [1, 2,3]
队列操作
1). 入队:enQueue
2). 出队:
3). 查看队列
4). 退出
"""

代码与入栈类似 这里不再多写了

  over~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值