【python零基础入门学习】python基础篇(基础结束篇)之数据结构类型-列表,元组,字典,集合(五)

news2024/11/18 7:52:27

  本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》暂未更新

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

 

列表:

  • 属于容器,可变,序列

创建以及访问列表:

>>> import random
#创建具有5个随机数字的列表
>>> alist = [random.randint(1,100) for i in range(5)]
>>> alist
[10, 15, 40, 5, 50]

#赋值
>>> alist[-1] = 21
>>> alist
[10, 15, 40, 5, 21]

>>> alist[1:3] = [1,3,5,7,9]
>>> alist
[10, 1, 3, 5, 7, 9, 5, 21]

#追加
>>> alist.append(5)
>>> alist
[10, 1, 3, 5, 7, 9, 5, 21, 5]
>>> alist.insert(0,5)
>>> alist
[5, 10, 1, 3, 5, 7, 9, 5, 21, 5]
>>> alist.count(5) #统计5出现的次数
4
>>> alist.index(5)  ---返回第一个5的下标
0

>>> alist.append([1,2])
>>> alist
[5, 10, 1, 3, 5, 7, 9, 5, 21, 5, [1, 2]]
>>> alist.extend([1,2])
>>> alist
[5, 10, 1, 3, 5, 7, 9, 5, 21, 5, [1, 2], 1, 2]

#默认从末尾开始弹出
>>> alist.pop()
2
>>> alist
[5, 10, 1, 3, 5, 7, 9, 5, 21, 5, [1, 2], 1]
>>> alist.pop(-2)#弹出下标为-2 的值
>>> alist.pop(5)#弹出下标为5的值
7
>>> alist
[5, 10, 1, 3, 5, 9, 5, 21, 5, 1]

>>> alist.insert(3,86)
>>> alist
[5, 10, 1, 86, 3, 5, 9, 5, 21, 5, 1]
>>> alist.remove(86)
>>> alist
[5, 10, 1, 3, 5, 9, 5, 21, 5, 1]

>>> alist.remove(5) #删除数字5,从左向右开始删除

>>> a = alist.pop()  #将pop的返回值赋值给a
>>> a
1
>>> b = alist.remove(5) # remove没有返回值,默认返回None
>>> b

>>> alist
[10, 1, 3, 9, 5, 21, 5]
>>> alist.reverse()
>>> alist
[5, 21, 5, 9, 3, 1, 10]
>>> alist.sort() #默认升序
>>> alist
[1, 3, 5, 5, 9, 10, 21]

>>> alist
[1, 3, 5, 5, 9, 10, 21]
>>> alist.sort(reverse=True) #降序
>>> alist
[21, 10, 9, 5, 5, 3, 1]

>>> blist = alist.copy() #将alist的值赋值给blist, 但是采用不同内存空间
>>> alist
[21, 10, 9, 5, 5, 3, 1]
>>> blist
[21, 10, 9, 5, 5, 3, 1]
>>> blist.clear() #清空列表
>>> blist
[]
>>> alist
[21, 10, 9, 5, 5, 3, 1]

列表练习: 

1.程序的运行方式

1. 程序的运行方式
```shell
(0) 压栈
(1) 出栈
(2) 查询
(3) 退出
请选择(0/1/2/3): abc
无效的输入,请重试。
(0) 压栈
(1) 出栈
(2) 查询
(3) 退出
请选择(0/1/2/3): 2
[]
(0) 压栈
(1) 出栈
(2) 查询
(3) 退出
请选择(0/1/2/3): 0
数据: 
输入为空
(0) 压栈
(1) 出栈
(2) 查询
(3) 退出
请选择(0/1/2/3): 0
数据: hello
(0) 压栈
(1) 出栈
(2) 查询
(3) 退出
请选择(0/1/2/3): 0
数据: world
(0) 压栈
(1) 出栈
(2) 查询
(3) 退出
请选择(0/1/2/3): 2
['hello', 'world']
(0) 压栈
(1) 出栈
(2) 查询
(3) 退出
请选择(0/1/2/3): 1
从栈中弹出了: world
(0) 压栈
(1) 出栈
(2) 查询
(3) 退出
请选择(0/1/2/3): 1
从栈中弹出了: hello
(0) 压栈
(1) 出栈
(2) 查询
(3) 退出
请选择(0/1/2/3): 1
空栈
(0) 压栈
(1) 出栈
(2) 查询
(3) 退出
请选择(0/1/2/3): 3
Bye-bye
```
2. 框架
```python
def push_it():
def pop_it():
def view_it():
def show_menu():
if __name__ == '__main__':
    show_menu()
```
3. 完成每个函数

2.程序代码

初步代码到完善代码。

stack = []
def push_it():
    data = input('数据: ').strip()
    if data :  #非空字符串为真
        stack.append(data)
    else:
        print('\033[31;1m输入为空\033[0m')

def pop_it():
    if stack : #列表非空为真
        print('从栈中弹出了: \033[34;1m%s\033[0m' % stack.pop())
    else:
        print('\033[31;1m空栈\033[0m')


def view_it():
    print('\033[31;1m%s\033[0m' % stack)


def show_menu():
#    try:
    menu = """(0)压栈:
(1)出栈:
(2)查询:
(3)退出:
请选择(0/1/2/3):"""
    while 1:
        choice = input(menu).strip()#去除两端空白
        if choice not in ['0','1','2','3']:
            print('无效的输入,请重试: ')
            continue
        if choice == '0':
            push_it()
        elif choice == '1':
            pop_it()
        elif choice == '2':
            view_it()
        else:
            break
            print('bye-bye')
    # except:
    #     print('请按照菜单输入相应数字')


if __name__ == '__main__':
    show_menu()

stack = []
def push_it():
    data = input('数据: ').strip()
    if data :  #非空字符串为真
        stack.append(data)
    else:
        print('\033[31;1m输入为空\033[0m')

def pop_it():
    if stack : #列表非空为真
        print('从栈中弹出了: \033[34;1m%s\033[0m' % stack.pop())
    else:
        print('\033[31;1m空栈\033[0m')


def view_it():
    print('\033[31;1m%s\033[0m' % stack)


def show_menu():
#    try:
    #cmds = {'0':push_it(),'1':pop_it(),'2':view_it()} ----把函数的值(返回值None)放到字典里
    cmds = {'0':push_it,'1':pop_it,'2':view_it}  #这才是调用函数
    menu = """(0)压栈:
(1)出栈:
(2)查询:
(3)退出:
请选择(0/1/2/3):"""
    while 1:
        choice = input(menu).strip()#去除两端空白
        if choice not in ['0','1','2','3']:
            print('\033[031;1m无效的输入,请重试: \033[0m')
            continue
        if choice == '3':
            print('bye-bye')
            break

        cmds[choice]()
    # except:
    #     print('请按照菜单输入相应数字')


if __name__ == '__main__':
    show_menu()

元组:

  • 属于容器,不可变,序列

创建元组:

>>> 'hello'.count('l')
2
>>> 'hello'.index('l')
2

>>> atuple = (12, 20, 16, 25,22)
>>> atuple.count(12)
1
>>> atuple.index(12)
0

#单元组
>>> a = ('hello')
>>> type(a)
<class 'str'>
>>> a
'hello'
>>> b = ('hello',) #加逗号为了将其变成元组
>>> type(b)
<class 'tuple'>
>>> b
('hello',)
>>> len(b)
1

字典:

  • 属于容器,可变,映射类型

  • 字典的键不能重复

  • 字典的key只能是不可变的 ---数字,字符,元组

创建字典:

>>> dict(['ab','cd','ef'])
{'a': 'b', 'c': 'd', 'e': 'f'}
>>> dict([('name','tom'),('age',20)])
{'name': 'tom', 'age': 20}
>>> dict([['name','tom'],['age',20]])
{'name': 'tom', 'age': 20}

>>> dict(['ab' ,['name','tom'],('age',20)])
{'a': 'b', 'name': 'tom', 'age': 20}

>>> {}.fromkeys(('tom','jerry','bob','alice'),7)
{'tom': 7, 'jerry': 7, 'bob': 7, 'alice': 7}

>>> adict = dict(['ab', ['name', 'tom'], ('age', 20)]) ---
>>> adict
{'a': 'b', 'name': 'tom', 'age': 20}
>>> 'tom' in adict
False
>>> 'name' in adict
True
>>> for key in adict:
...     print(key, adict[key])
... 
a b
name tom
age 20

>>> '%s is %s years old' % (adict['name'],adict['age'])
'tom is 20 years old'
>>> '%(name)s is %(age)s years old' % adict
'tom is 20 years old'

>>> adict['age'] = 22  #键存在,则更新值
>>> adict
{'a': 'b', 'name': 'tom', 'age': 22}

>>> adict['email'] = '163@qq.com' #键不存在,则创建添加
>>> adict
{'a': 'b', 'name': 'tom', 'age': 22, 'email': '163@qq.com'}

>>> del adict['a'] #删除字典中的键
>>> adict
{'name': 'tom', 'age': 22, 'email': '163@qq.com'}

#元组可以作为key,列表不行,因为列表可变
>>> {(10,15):'tom'}
{(10, 15): 'tom'}

#通过key获取值------用得最广泛最重要的
>>> adict.get('name')
'tom'
>>> adict.get('names', 'not found')#key不存在返回后者
'not found'

>>> adict.keys()
dict_keys(['name', 'age', 'email'])
>>> adict.values()
dict_values(['tom', 22, '163@qq.com'])
>>> adict.items()
dict_items([('name', 'tom'), ('age', 22), ('email', '163@qq.com')])

>>> adict.pop('name') #弹出字典key
'tom'

>>> adict.update({'age':23})
>>> adict
{'age': 23, 'email': '163@qq.com', 'name': 'tom'}



集合:

  • 不同元素组成

  • 元素不能重复

  • 元素必须是不可变对象

  • 元素没有顺序

  • 集合就像是一个无值的字典

  • 分类:可变集合set,不可变集合frozenset

#创建集合
>>> aset = set('abcd')
>>> aset
{'d', 'c', 'a', 'b'}
>>> set(['tom','jerry','bob'])
{'tom', 'bob', 'jerry'}
>>> bset = set('bcd')
>>> bset 
{'d', 'c', 'b'}
>>> 'a' in bset
False
>>> len(aset)
4
>>> for ch in aset:
...     print(ch)
... 
d
c
a
b

>>> aset & bset  #交集
{'d', 'c', 'b'}
>>> aset | bset   #并集
{'c', 'a', 'd', 'b'}
>>> aset - bset   #差补,aset有,bset中没有的
{'a'}

>>> cset = set('abc')
>>> cset.add('hello') ---添加
>>> cset
{'c', 'a', 'hello', 'b'}
>>> cset.update('hello')---相当于列表extend添加
>>> cset
{'c', 'a', 'e', 'hello', 'h', 'l', 'b', 'o'}
>>> cset.update(['nimade','chishi'])
>>> cset
{'x', 'c', 'a', 'hello', 'h', 'l', 'b', 'o', 'nimade', 'chishi', 'i'}
>>> cset.remove('e')
>>> cset
{'c', 'a', 'hello', 'h', 'l', 'b', 'o'}

>>> cset
{'c', 'a', 'e', 'b', 'd'}
>>> dset
{'d', 'c', 'b'}
>>> cset.issuperset(dset)---c是d的超集(包含)
True
>>> dset.issubset(cset)  ----d是c的子集
True

字典练习:

去重:(两个文件之间的差异,例如访问url,每天的访问页面有哪些)

##去重##
# [root@room9pc01 local.d]# cp /etc/passwd /tmp/mima1
# [root@room9pc01 local.d]# cp /etc/passwd /tmp/mima2
# [root@room9pc01 local.d]# vim /tmp/mima2
# >>> with open('/tmp/mima1') as f1:
# ...     aset = set(f1)
# >>> with open('/tmp/mima2') as f2:
# ...     bset = set(f2)
# >>> bset - aset
# >>> with open('/tmp/result.txt' , 'w' ) as f3:
# ...     f3.writelines(bset - aset)

数据类型结构练习

模拟用户登录信息系统:

import getpass

userdb = {}

def register():
    username = input('用户名: ').strip()
    if not username:
        print('用户名不能为空')
    elif username in userdb:
        print('用户已存在')
    else:
        password = input('密码: ')
        userdb[username] =password


def login():
    username = input('用户名: ').strip()
    password = getpass.getpass('密码: ')
    #if (username in userdb) and (userdb[username] == password):
    if userdb.get(username) == password:
        print('登录成功')
    else:
        print('登录失败')


def show_menu():
    cmds = {'0':register, '1':login}
    menu = """(0) 注册
(1) 登录
(2) 退出
请选择(0/1/2): """

    while 1:
        choice = input(menu).strip()
        if choice not in ['0','1','2']:
            print('请输入提示信息,谢谢')
            continue

        if choice == '2' :
            print('bye-bye')
            break

        cmds[choice]()


if __name__ == '__main__':
    show_menu()

 python基础篇总结 

到这里,python基础篇算是完结了,大家可以反复去练习这几篇python基础篇,把基础打牢了,后面进行编程就会事半功倍,记得多敲,记得多敲,记得多敲!!!重要事情说三次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1011809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电商运营管理——商品活动

商品活动很大程度上决定了电商平台的用户活跃度&#xff0c;本篇文章将详细介绍商品活动的几大类目&#xff0c;并举例每一类的不同活动内容。希望本篇文章能对运营岗位的你有所帮助。 电商平台最重要的功能是运营管理&#xff0c;而运营管理中最重要的功能就是各种商品活动&am…

阿里巴巴国际数字商业24届校招大量hc,等你来拿~

阿里巴巴国际数字商业招人啦!!! 今年阿里lazada买家前端团队有大量hc, 同学们快冲啊!!! 除了前端岗,还有算法, 客户端等 图中的二维码为我的个人内推码, 直接扫码进去填写简历提交即可, 后续可以帮忙查看内推进度, 有什么疑问我会在线回复 职位要求 【必备项】 1、熟练使用各种…

程序员自由创业周记#11:商标

商标重要吗 为什么我那么重视App名字里要有一个自己的商标&#xff0c;主要防止的是被竞争对手抄袭&#xff0c;甚至连名字也起同样的&#xff0c;如果没有商标&#xff0c;很难维权&#xff0c;只能放任自由。在上上家公司&#xff0c;我们的产品起了一个与别人重复的名字&am…

MATLAB中findpeaks函数用法

目录 语法 说明 示例 在MATLAB中&#xff0c;findpeaks函数用于查找信号中的峰值&#xff08;peaks&#xff09;。以下是findpeaks函数的基本语法、说明以及示例&#xff1a; 语法 [pks,locs] findpeaks(x) [pks,locs] findpeaks(x, Name, Value)说明 参数说明 x&…

Windows 性能突然打鸡血,靠 Bug 修复了多年顽疾

要说 的 Bug 集中地&#xff0c;当属资源管理器。 速度缓慢、卡顿、崩溃&#xff0c;不同设备、不同版本的用户都有不同的感受。 严格来说&#xff0c;这其实是 Windows 的传统艺能&#xff0c;要完美修复可不容易。 而作为小老弟的文件资源管理器&#xff0c;时不时来个无响…

web技术——HTML文档基础部分(1)

文章目录 前言壹、基本语法1.1 含义1.2 注释1.3 HTML文档的标准结构 贰、基本的文本标记2.1 段落2.2 保留空白字符2.3 标题2.4 水平线 前言 HTML是一种标记语言,这意味着它用来标记文档中的各个部分&#xff0c;已指定文档在打印件或者显示器上的显示方式。简单来说&#xff0…

pycharm终端激活环境时报错

pycharm终端激活环境时报错 nvoke-Expression : 无法将参数绑定到参数“Command”&#xff0c;因为该参数为空字符串。 所在位置 E:\anaconda\anaconda\anaconda3\envs\wsbpytorch\shell\condabin\Conda.psm1:76 字符: 36 Invoke-Expression -Command $activateCommand;~~~~~~~…

获取实时时间+日期+星期

1.展示 2.代码 data() {return {newYear: "0000 年 00 月 00 日 ",newTime: "00:00:00",today: "",timer: null, //时间定时器};}, created() {this.getCurrentDate();this.timer setInterval(() > {this.getCurrentDate();}, 1000); }, met…

pve 故障记录

pve 故障记录 通过网页pve console 执行 参考网页&#xff1a; cat /etc/os-release proxmox吧 https://foxi.buduanwang.vip/pve https://www.reddit.com/r/Proxmox/comments/vy33ho/stuck_at_grub_rescue_after_an_update_and_reboot/?rdt37867 https://pve.proxmox.co…

Versus-在线全球物品可视化比较平台 万物皆可对比

Versus介绍 Versus是一个成熟的在线全球物品可视化比较平台&#xff0c;从比较手机到比较城市&#xff0c;涵盖 90 多个类别&#xff0c;可以在线比较智能手机、相机、耳机、显卡等&#xff0c;Versus 提供详细的技术规格、数据可视化和价格比较&#xff0c;是从智能手机到 PC…

使用scp命令失败出错

使用scp命令失败出错&#xff0c;无反应。 解决&#xff1a; 1.使用ifconfig查看目标主机公网IP地址 ifconfig需使用公网ip 2.配置免密登录 可参考 远程登录ssh ssh-copy-id root目标主机ip再次尝试scp命令。 SCP&#xff08;Secure Copy&#xff09;是一个用于在本地主机和…

Vscode远程调试及gdbserver配置

如果你像我一样更喜欢使用 GUI 而不是命令行来设置断点、单步调试代码以及​​在程序运行时检查值&#xff0c;那么您可以通过以下方法设置 VSCode 和 gdbserver 以在运行时在本地编辑和调试代码它在远程服务器上。 注意&#xff1a;我在本地使用 macOS Sierra&#xff0c;远程…

低功耗无线扫描唤醒技术,重塑物联网蓝牙新体验

随着人类社会活动的信息化和通信技术的发展&#xff0c;传统设施越来越倾向于网络化、无线化。物联网被人们视为继计算机、互联网之后信息技术产业发展的第三次革命。无线短距离通信方式是物联网的主要通信方式之一&#xff0c;随着物联网终端通信设备应用越来越广&#xff0c;…

Python匿名函数

简单来说&#xff0c;匿名函数就是懒。 结构 函数名 lambda 参数 : 函数体 fun lambda x,y : x*y*y fun(3,5)优点 可以让写代码更“懒”一点

锐捷RG-UAC统一上网行为管理审计系统信息泄漏漏洞

一、漏洞简介 锐捷RG-UAC统一上网行为管理审计系统存在账号密码信息泄露,可以间接获取用户账号密码信息登录后台 。 二、影响版本 锐捷RG-UAC统一上网行为管理审计系统 三、资产测绘 hunterapp.name"Ruijie 锐捷 RG-UAC"登录页面 四、漏洞复现 F12搜索super_…

ERR_CONNECTION_REFUSED等非标准的HTTP错误状态码原因分析和解决办法

文章目录 DNS Resolution Failed- DNS服务器故障- DNS配置错误- DNS劫持- 域名过期- 其他网络问题 ERR_CONNECTION_REFUSED-"ERR_CONNECTION_REFUSED" 错误可能有多种原因 ERR_SSL_PROTOCOL_ERROR"ERR_SSL_PROTOCOL_ERROR" 错误的原因和解决办法1. SSL/TLS…

睿趣科技:现在开抖音小店还来得及吗

抖音&#xff0c;作为一款风靡全球的社交短视频应用&#xff0c;已经在短短几年内改变了人们的生活方式和商业模式。随着抖音上涌现出越来越多的网红和小店&#xff0c;许多人开始考虑是否还有机会在这个领域创业。那么&#xff0c;现在开抖音小店还来得及吗? 首先&#xff0c…

HPE财报:计算存储微降,智能边缘大幅增长

科技软件巨头惠普集团在2015年11月的时候进行了拆分&#xff0c;惠普拆分为两家上市公司&#xff1a; ①专注销售服务器、软件、存储、网络和相关服务的惠普企业,后改名慧与&#xff08;HPEnterprise&#xff0c;美股代码HPE&#xff09;&#xff0c; ②销售打印机和个人电脑的…

Packet Tracer中交换机的配置及Lab2实验

交换机是计算机网络中的一种网络设备&#xff0c;用于在局域网内传输和转发数据包。它具有数据包转发、数据包过滤、VLAN划分和端口管理等功能&#xff0c;能够实现高速、可靠和安全的数据传输&#xff0c;并支持网络的管理和控制。交换机在网络中发挥着连接终端设备和实现数据…

Talk | ICCV‘23北京通用人工智能研究院黄江勇:ARNOLD-三维场景中基于语言的机器人任务学习

本期为TechBeat人工智能社区第531期线上Talk&#xff01; 北京时间9月14日(周四)20:00&#xff0c; 北京通用人工智能研究院实习研究员—黄江勇的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “ARNOLD-三维场景中基于语言的机器人任务学习”&…