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"
执行结果:
来源:https://www.cnblogs.com/vaon/p/10965031.html