文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python(五)列表

2023-01-31 02:01

关注

数组

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

列表

一、列表的定义

• 定义一个空列表

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"



阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯