Python(五)列表

发布时间:2019-08-14 12:48:22编辑:auto阅读(74)

    数组

    数组存储的是同一类型的一串信息

    列表

    一、列表的定义

    • 定义一个空列表

    list = []

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

    赋值方式定义:

    list = ["fentiao", 4, 'gender']

    list1 = ['fentiao',(4,'male')]

    工厂函数定义:

    n = list("hello")

    In [2]: n=list("hello")

    In [3]: print n

    ['h', 'e', 'l', 'l', 'o']

    二、支持索引、切片、拼接、重复、成员操作符

    索引、切片:

    In [4]: li=[1,1.0,True,'hello',1+4j,[1,2,"hello"]]

    In [5]: li[0]

    Out[5]: 1

    In [6]: li[-1]

    Out[6]: [1, 2, 'hello']

    In [7]: li[:]

    Out[7]: [1, 1.0, True, 'hello', (1+4j), [1, 2, 'hello']]

    In [8]: li[1:]

    Out[8]: [1.0, True, 'hello', (1+4j), [1, 2, 'hello']]

    In [9]: li[0:2]

    Out[9]: [1, 1.0]

    In [10]: li[::-1]

    Out[10]: [[1, 2, 'hello'], (1+4j), 'hello', True, 1.0, 1]

    拼接:

    In [18]: li1=['vsftpd','apache']

    In [19]: li2=['mariadb','nfs']

    In [20]: li1 + li2

    Out[20]: ['vsftpd', 'apache', 'mariadb', 'nfs']

    重复:

    In [21]: li1=['vsftpd','apache']

    In [22]: li1*2

    Out[22]: ['vsftpd', 'apache', 'vsftpd', 'apache']

    成员操作符:

    In [23]: li1=['vsftpd','apache']

    In [24]: 'vsftpd' in li1

    Out[24]: True

    In [25]: 'vsftpd' not in li1

    Out[25]: False

    题目1

    查看1-10号主机的21,22,3306,80,69端口

    解答:

    #!/usr/bin/env python
    # coding:utf-8
    ports = [21,22,3306,80,69]
    for i in range(1,11):
        for port in ports:   #可以通过 for i in list进行遍历列表中的各个元素
            ip = '172.25.254.'+str(i)
            print "[+] Listening On:%s:%d" %(ip,port)

    @font-face {   font-family: "Times New Roman"; }@font-face {   font-family: "宋体"; }p.MsoNormal { margin: 0pt 0pt 0.0001pt; text-align: justify; font-family: 'Times New Roman'; font-size: 10.5pt; }p.p { margin: 5pt 0pt; text-align: left; font-family: 'Times New Roman'; font-size: 12pt; }span.msoIns { text-decoration: underline; color: blue; }span.msoDel { text-decoration: line-through; color: red; }div.Section0 { page: Section0; }

    三、列表的常用方法

    1.更新列表

    append(增加一个元素)

    extend(可以增加多个元素,可以在括号中给出一个列表,这个列表中的元素会倒入到原列表,成为他的元素)

    图片1.png

    图片2.png

    #可以看到同样增加一个列表,append把它当成一个元素增加进去,而extend把它当作两个元素加了进去,达到了一次性增加多个元素的目的

    如果增加一个字符,使用append表示增加这个字符串,而extend表示这个字符串的每个字母作为一个元素增加进去:

    In [52]: li1

    Out[52]: ['vsftpd', 'apache']

    In [53]: li1.append('hello')

    In [54]: li1

    Out[54]: ['vsftpd', 'apache', 'hello']

    In [55]: li1.extend('hello')

    In [56]: li1

    Out[56]: ['vsftpd', 'apache', 'hello', 'h', 'e', 'l', 'l', 'o']

    • 在指定位置添加元素使用inert方法;
    l.insert(index, object)

    Screenshot from 2017-12-25 20:30:07.png

    • 修改列表的元素:直接重新赋值;

    Screenshot from 2017-12-25 20:31:16.png

    2.查看列表

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

    Screenshot from 2017-12-25 20:33:32.png

    3.删除列表

    remove

    图片3.png

    pop

    li.pop()表示删除最后一个元素

    li.pop(0)表示删除第一个元素

    del

    #直接删除这个列表

    图片4.png




    题目2:

        1. 用户名和密码分别保存在列表中;
        2. 用户登录时,判断该用户是否注册;
        2. 用户登录时,为防止***暴力破解, 仅有三次机会;
        3. 如果登录成功,显示登录成功(exit(), break).

    解答:

    #!/usr/bin/env python
    #coding: utf-8

    users = ["user1", "user2", "user3"]
    passwords = ["123", "456", "789"]

    i  = 0
    while i < 3:
        name = raw_input("请输入用户名:")
        if name not in users:
            print "用户未注册"
            break
        password = raw_input("请输入密码:")
        i += 1
        index = users.index(name)
        if password == passwords[index]:
                print "恭喜登录成功"
                break
        else:
                print "请输入正确的用户名或密码!"
    else:
        print "已登录三次,请稍后再试"

    题目3:

    打印栈的过程

    解答:

    #!/usr/bin/env python
    #coding:utf-8

    """
    列表有容器和可变的特性,通过列表构建其他数据类型;
    1. 栈(eg: 往箱子里面放书)
    栈的工作方式后进先出(LIFO);

    2. 队列(eg:饭堂排队买饭)
    队列的工作方式先进先出(FIFO) 
    """
    stack = []
    info =  """
                     栈操作
        1. 出栈
        2. 入栈
        3. 查看栈元素
        4. 退出
    """
    print info

    while 1:
        choice = raw_input("Choice:").strip()
        
        if choice == '1':
            if not stack == []:
                stack.pop()
            else:
                print "栈为空"
        elif choice == '2':
            value = raw_input("请输入入栈的值:").strip()
            stack.append(value)
        elif choice == '3':
            print "栈元素:",
            for i in stack:
                print i,
            print
        elif choice == '4':
            exit()
        else:
            print "not valid choice"



关键字

上一篇: python语法部分

下一篇: Python对文件的操作