列表

列表list:打了激素的数组
数组是只能存储同一种数据类型的结构:

定义列表:
• 定义一个空列表

list = [ ]

• 定义一个包含元素的列表,元素可以是任意类型,包括数值类型,列表,字符串等均可。

li = [1, 1.0, "westos", (1,2,3,4), [1,2,3,4]]

定义元组

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

列表

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

li[0] = 13

列表

列表的索引
•下标是从0开始计算,比如list[0]读取的是列表的第1个元素;

•list[-1]读取的是列表的倒数第1个元素;

列表

列表的切片
• 0代表从哪个索引开始切片;
• 3代表切片到哪个位置,并且不包含第三个索引;
• 2代表切片的步长;
>>> list1
['fentiao', 5, 'male']
>>> list1[0:3:2]

['fentiao', 'male']

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

[[1, 2, 3, 4], (1, 2, 3, 4), 'westos', 1.0, 13]

列表

重复:

li*2

列表

连接:

li1+li2(不建议这样连接两个列表,后面有效率更高的方法 )

列表

成员操作符:

列表

列表的增删改查
列表的添加
:
• 列表可通过append方法添加元素;追加元素到列表的最后:"

allow_ip.append("172.25.254.250")

列表
• 列表可通过insert方法添加元素;追加元素到列表指定位置:

allow_ip.insert(0, "172.25.254.51")

列表

列表可通过entexd方法添加元素;追加多个元素到列表的最后:

allow_ip.extend(["172.25.254.45", "172.25.56.21"])

列表


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

allow_ip[0] = "192.168.1.1"

列表

列表的查看
• 查看某个列表元素的索引值用index方法;

buy.index("apple")

列表

• 查看某个列表元素出现的次数用count方法;

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

buy.remove("apple")

列表

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

del buy[0]

列表

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

del buy[1:]

列表

删除列表对象

del buy

列表

排序
# 排序,如果说都是数字,按照数字大小排序 ;
# 是字母的话,按照 ASCII 码来排序;

# **** 如何查看对应的 ASCII 码 ? ord('a')

列表

li.sort()
列表练习:
用户登录程序版本2:
用户名和密码分别保存在列表中;
用户登录时,判断该用户是否注册;
用户登录时,为防止黑客暴力**, 仅有三次机会;
如果登录成功,显示登录成功(exit(), break).
知识点学习:
python中特有的while....else...语句
如果满足while后面的语句,执行while循环的程序, 如果不满足,执行else里面的程序.
提示: 用户名和密码一一对应
代码如下:
#!/usr/bin/env python
#coding:utf-8
user=["westos","student","root"]
passwd=["westos","student","root"]
trycount=0
while trycount<3:
    inname=raw_input("请输入用户名:")
    if inname not in user:
        print":给用户未注册"
        break
    inpasswd=raw_input("请输入登陆密码:")
    i=user.index(inname)
    if inpasswd==passwd[i]:
        print "登陆成功"
        break
    else:
        print "密码错误"
        trycount+=1
else:
    print"超过三次"

列表

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


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

print'''
    栈操作
    1).入栈
    2).出栈
    3).栈长度
    4).查看栈
    5).退出
   '''

stack =[]
while True:
    choice=input("请输入你的选择:")
    if choice ==1:
        value=raw_input("请输入入栈元素:")
        stack.append(value)
        print "元素%s入栈成功..." %(value)
    elif choice ==2:
        if len(stack)==0:
            print"栈为空"
        else:
            item=stack.pop()
            print"元素%s出栈成功..." %(item)
    elif choice==3:
        print len(stack)
    elif choice==4:
        if len(stack)==0:
            print"栈为空"
        else:
            for i in stack:
               print i,
    elif choice==5:
        exit()
    else:

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

列表

队列
队列是先进先出(FIFO):
类似于去餐厅买饭排队
"""
队列操作
1). 入队:enQueue
2). 出队:
3). 查看队列
4). 退出
"""
代码如下:
#!/usr/bin/env python
#coding:utf-8
print'''
    队操作
    1).入队
    2).出队
    3).队长度
    4).查看队
    5).退出
   '''

queue =[]
while True:
    choice=input("请输入你的选择:")
    if choice ==1:
        value=raw_input("请输入入队元素:")
        queue.append(value)
        print "元素%s入队成功..." %(value)
    elif choice ==2:
        if len(queue)==0:
            print"队为空"
        else:
            item=queue.pop(0)
        print"元素%s出队成功..." %(item)
    elif choice==3:
        print len(queue)
    elif choice==4:
        if len(queue)==0:
            print"队为空"
        else:
            for i in queue:
               print i,
    elif choice==5:
        exit()
    else:
        print"请输入正确的选择..."
列表