python学习day03-栈队列元组

栈 队列

1)栈:先进后出
用python来展示栈的出入

stack = []

info = """
        栈操作
    1.入栈
    2.出栈
    3.栈长度
    4.栈顶元素
    5.退出
"""
while True:
    a = raw_input("请输入你的选项:")
    if a == '1':
        in_value = raw_input("入栈元素:")
        stack.append(in_value)
        print "元素%s入栈成功!"%(in_value)
        print stack
    elif a == '2':
        if stack:
            out_value = stack.pop()
            print "出栈成功"
            print stack
        else:
            print "栈为空!"
    elif a == '3':
        print "栈长度为%d"%(len(stack))
        print stack
    elif a == '4':
        if stack:
            print "栈顶元素为:%s" %(stack[-1])
        else:
            print "栈为空!"
    elif a == '5':
        exit(0)
    else:
        print "请输入正确的选项!"

2)队列:先进先出
用python来展示队列的出入

queue = []

info = """
        队列操作
    1.入队列
    2.出队列
    3.队列长度
    4.队头元素
    5.退出
"""
while True:
    a = raw_input("请输入你的选项:")
    if a == '1':
        in_value = raw_input("入队列元素:")
        queue.append(in_value)
        print "元素%s入队列成功!"%(in_value)
        print queue
    elif a == '2':
        if queue:
            out_value = queue.pop(0)
            print "出队列成功"
            print queue
        else:
            print "队列为空!"
    elif a == '3':
        print "队列长度为%d"%(len(queue))
        print queue
    elif a == '4':
        if queue:
            print "队列顶元素为:%s" %(queue[0])
        else:
            print "队列为空!"
    elif a == '5':
        exit(0)
    else:
        print "请输入正确的选项!"

3)is和等于号的区别
一定要在交互式环境下测试
字符串驻留机制
- 对于较小的字符串,id相同
- 对于较长的字符串,id不相同,因为不会驻留字符串的副本
a = ‘hello’
b = ‘hello’
print id(a),id(b) true##一样
c = ‘hello python’
d = ‘hello python’
print id(c),id(d) false##不一样
e = ‘python’
f = “”.join([‘p’,’y’,’t’,’h’,’o’,’n’])
print id(e),id(f) false##不一样
结论:
is表示的是对象标识符,表示两个变量的值是否在同一块内存空间
**==表示的是值是否相等
4)拷贝
(1)
li1 = li
直接赋值,会指向原来的内存空间,不会改变id
(2)浅拷贝:拷贝出一份副本,但是没有拷贝出字对象,所以是不完全拷贝
方法一:

li1 = li[:]

列表id不一样,但元素id一样
方法二:

import copy
li2 = copy.copy(li)

同方法一效果一样
(3)深拷贝:里面的所有对象重新拷贝,包括子对象

deepcopy:深拷贝
li3 = copy.deepcopy(li)

列表及元素id都不一样

元组

1)元组的定义:

t = (1,2,3,4)

当只有一个元素时,必须加逗号

t = (1,)

定义空元组:

t = tuple()     ##定义空列表:li = list()

2)元组的特性:
索引

t = (1,1.0,1L,1+2j,'hello',[1,2])
print t[0],t[-1],t[-1][-1]

切片

print t[::-1]

连接

print t+(1,2,3)

重复

print t * 3

成员操作符

print 1 in t
print 1 not in t

3)元组可迭代

t = (1,1.0,1L,1+2j,'hello',[1,2])
for i in t:
    print i

4)端口扫描器雏形

ips=[]
for i in range(1,255)
ips.append('172.25.254.'+str(i))
ports = (21,22,80,3306,8000)
for ip in ips:
    for port in ports:
        print '[+] Scanning %s:%d'%(ip,port)

5)元组使用

t.count(value)      ##该字符出现的次数
t.index(value)      ##返回value在元组中的偏移量(即索引值)
x=2 
y=1
(1)先计算右边的表达式y,x,在内存中开辟内存空间,生成元组
(2)将x,y = (2, 1)
x,y = y,x
print x,y
**测试两种数据值交换的时间对比
from timeit import Timer
print Timer('temp = x;x = y;y = temp','x = 2;y = 1').timeit()
print Timer('x,y = y,x','x = 2;y = 1').timeit()

6)字典创建

hash哈希 =======字典dict

类型是dict

d = {
    #前面的称为键,key
    #后面的称为值,value
    #键值对(key-value)
    'name':'root',
    'passwd':'westos'
}
print d['name']
print d['passwd']

创建字典的三种方式

info = {
    'root':{
        'name':'root',
        'passwd':'westos',
        'age':18,
        'email':['westos@qq.com','redhat@126.com']
    },
    'student':{
        'name':'student',
        'passwd':'redhat',
        'age':22,
        'email':['525065007@qq.com','redhat@126.com']
    },
}
print info['student']

通过工厂函数创建字典

d = dict(a=1,b=2,c=3)
print d,type(d)
dict = {}
print type(dict)

fromkeys方法创建字典

d={}.fromkeys(['user1','user2','user3'],'westos')
print d

题目:用字典生成银行卡号1-1000

cardisd = []
for i in range(1,1001):
    cardid = "610121%.4d"%(i)
    cardids.append(cardid)
cardinfo = {}.fromkeys(cardids,"westos")
print len(cardinfo)

内置方法:min,max,zip,enumerate
字典中默认遍历字典的key值

提升:每行显示5for i,j in enumerate(cardinfo):
    if i%5 == 0:
        print
    print  print i,j,a[j],

7)字典特性
不可行:索引,切片,连接,重复(因为字典是无序的数据类型)
可行的特性:成员操作符;

'a' in d  返回一个布尔值

8)字典的增加

1.update(key=value,....)

在增加的时候如果key存在,更新对应的value值

d.update(a=10,b=2,c=3)
2.setdefault(key,value)

如果存在不操作,如果不存在添加key-value值
9)字典的查看

d.items()
for i,j in d.items():
    print i,j

10)字典的删除
(1)d.pop(k[,d]):
如果key存在删除对应的key-value;
如果key不存在,判断d是否存在:
如果d不存在就报错KeyError
如果d存在,就删除d对应的值
(2)d.popitem
随机删除
(3)d.clear
清空
(4)del d
从内存中全部删除

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值