Python笔记(9)-列表

…衆ロ難τιáo~ 提交于 2020-02-11 09:39:29

1.定义一个空列表

list = []

2.定义一个包含元素的列表

元素可以是任意类型,包括数值类型、列表、元组、字符串等等均可

赋值方式定义

list = ['enzo','20','seber']

list1 = ['enzo',(20,'seber')]

工厂函数定义

n = list(""hello)

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

In [2]: print n
['h', 'e', 'l', 'l', 'o']

3.支持的操作符

索引、切片

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-3号主机的21,22,3306,80,69端口

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

执行结果:

4.列表的常用方法

4.1更新列表

append

增加一个元素

In [5]: li=['ecs','evs']

In [6]: li.append('ces')

In [7]: li
Out[7]: ['ecs', 'evs', 'ces']

extend

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

In [8]: li=['ecs','evs']

In [9]: li.extend(['ces','vbs'])

In [10]: li
Out[10]: ['ecs', 'evs', 'ces', 'vbs']

注:同样增加一个列表,append把他当成一个元素增加进去,而extend把他当作两个元素加了进去

In [11]: li=['ecs','evs']

In [12]: li.append(['ces','vbs'])

In [13]: li
Out[13]: ['ecs', 'evs', ['ces', 'vbs']]

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

In [14]: li=['ecs','evs']
In [15]: li.append('ces')
In [16]: li
Out[16]: ['ecs', 'evs', 'ces']

In [17]: li=['ecs','evs']
In [18]: li.extend('ces')
In [19]: li
Out[19]: ['ecs', 'evs', 'c', 'e', 's']

insert(index,object)

在指定位置添加元素

In [20]: li=['ecs','evs']

In [21]: li.insert(1,"ces")

In [22]: li
Out[22]: ['ecs', 'ces', 'evs']

4.2修改列表的元素

直接重新赋值

In [29]: li=['ecs','evs','ces','vbs','cts','csbs']

In [30]: li[0]='cloud'

In [31]: li
Out[31]: ['cloud', 'evs', 'ces', 'vbs', 'cts', 'csbs']

4.3查看列表

index

查看某个列表元素的下标

In [53]: li=['a','b','c']

In [54]: li.index('a')
Out[54]: 0

In [55]: li=['a','b','c','a']

In [56]: li.index('a')
Out[56]: 0

In [57]: li.index('a',0,4)
Out[57]: 0

In [58]: li.index('a',1,4)
Out[58]: 3

count

查看某个列表元素出现的次数

In [59]: li=['a','b','c','a']

In [60]: li.count('a')
Out[60]: 2

4.4删除

remove

删除元素

In [73]: li=['a','b','c','a']

In [74]: li.remove('a')

In [75]: li
Out[75]: ['b', 'c', 'a']

In [76]: li.remove(li[0])

In [77]: li
Out[77]: ['c', 'a']

pop

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

In [78]: li=['a','b','c','a']

In [79]: li.pop()
Out[79]: 'a'

In [80]: li
Out[80]: ['a', 'b', 'c']

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

In [81]: li=['a','b','c','a']

In [82]: li.pop(0)
Out[82]: 'a'

In [83]: li
Out[83]: ['b', 'c', 'a']

li.pop(1)表示删除第二个元素

In [85]: li=['a','b','c','a']

In [86]: li.pop(1)
Out[86]: 'b'

In [87]: li
Out[87]: ['a', 'c', 'a']

del

直接删除这个列表

In [95]: li=['a','b','c','a']

In [96]: del(li)

In [97]: li
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-97-5ce4e85ef0aa> in <module>()
----> 1 li

NameError: name 'li' is not defined

练习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:

打印栈的过程

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

2. 队列(eg:饭堂排队买饭)
队列的工作方式先进先出(FIFO)  

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

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"

执行结果:

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!