Python—day3

 

1、字符串在C里边就是字符数组

  Python里边一切事物都是对象,对象则是类创建的

  

 2、set集合

  set是一个无序且不能重复的元素集合

  #!/usr/bin/env python
# encoding: utf-8
#set对象不能有重复
s1 = set()
s1.add('alex')
print(s1)
s1.add('alex')
print(s1)
s1.add('shidong')
print(s1)
s1.clear()
print(s1)

s2 = set(['shi','shidong','sd','shi'])
print(s2)

结果:

{'alex'}
{'alex'}
{'shidong', 'alex'}
set()
{'shi', 'shidong', 'sd'

 

  set中可以有添加列表

s2 = set(['shi','shidong','sd','shi'])
print(s2)

difference函数生成新的集合

s2 = set(['shi','shidong','sd','shi'])

s3 = s2.difference('shi','shidong')

print(s3)

结果:

{'sd'}

 

#def:difference_update ,删除传入参数,并改变原来的set()集合,
#但是s2.difference_update 集合并没有内容
s2 = set(['shi','shidong','sd','shi'])
s4 = s2.difference_update(['shidong','sd'])
print(s2)
print(s4)
#discard 移除元素 intersection 取交集,新创建一个set
#symmetric_difference() 取到两个集合的差集,遍历两个集合,把两个集合的差集合并成一个集合
#isdisjoint 如果没有交集返回True
#issubset 是否是子集
#issuperset 是否是父集
#remove 只移除元素,需要加参数,并且没有返回值
#pop 移除一个元素,也可以把移除的元素赋值到新的集合中
s2 = set(['shi','shidong','sd','shi'])
ret = s2.pop()
print(s2)
print(ret)

3、collections系列

 一、计数器(counter)

  Counter 是对字典类型的补充,用于追踪值的出现次数

  ps:具备字典的所有功能 + 自己的功能

1、c = Counter('abcdfasdfdsfa')
2、print c
3、输出: Counter({'a':5, 'b':4,'c':3,'d':2,'e':1})

   Counter方法:查找对象的前几位:

    例如:

    #!/usr/bin/env python
    # encoding: utf-8
    import collections
    obj = collections.Counter('shidong')
    ret = obj.most_common(4)      #most_common :显示对象的前四位
    print(ret)

    #elements 方法:用来循环对象中的内容
for item in obj.elements():
print(item)
#循环并取出对象中的健值以及values
for k,v in obj.items():
print((k,v))

#update 方法:增加元素
obj = collections.Counter(['11','22','22','33'])
print(obj)
obj.update(['eric','11','11'])
print(obj)
#删除元素substract()
obj.subtract(['eric','11'])
print(obj)

 

二、有序字典(orderedDict)

orderdDict是对字典类型的补充,他记住了字典元素添加的顺序

  #有序字典OrderedDict()
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
print(dic)

#把某个键跟值拿到最后
dic.move_to_end('k2')
print(dic)

#按照顺序拿:拿最后一个健值,按照后进先出执行:popitem()
dic.popitem()
print(dic)
#自己指定去拿那个pop(),而且能够返回值
dic.pop('k1')
print(dic)
ret = dic.pop('k3')
print(ret)

#setdefault 设置默认值
#update()方法,不存在则增加值,存在则更改值
#字典默认输出的时候只输出key
dic.update({'k1':'v111','k2':'v10','k3':'22'})
print(dic)

 

三、默认字典(defaultdict)

defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。

 四、队列(deque)

#!/usr/bin/env python
# encoding: utf-8
#Python提供了两种队列:一种是双向队列一种是单项队列(先进先出FIFO)
#栈就相当于弹匣,后进先出
import collections
d = collections.deque()
d.append('1')
#在左侧插入
d.appendleft('10')
d.appendleft('1')
d.appendleft('5')
print(d)
#查看某个元素的个数count方法
print(d.count('1'))
#扩展extend(向右侧扩展)
d.extend(['yy','uu','ii'])
print(d)
#扩展extendleft(像左侧扩展)
d.extendleft(['shi','dong'])
print(d)
#删除某个值remove
d.remove('shi')
print(d)
#反转reverse
d.reverse()
print(d)
#rotate(英文意思:旋转,轮换,使轮流),功能:做到首尾连接
#最后一个元素能够连接到第一个元素,从右边的数据拿到左边轮
#插入
d.rotate()
print(d)
d.rotate(3)
print(d)

五、拷贝 ——深浅拷贝
数字、字符串用的是同样的内存地址,复制操作不会改变内存地址
其余拷贝会改变内存地址,,浅拷贝只拷贝第一次,不会拷贝多层,
深拷贝会全部拷贝。

六、单项队列(先进先出)
#单项队列在queue模块中
import queue
#创建单项队列
q = queue.Queue()
#往里边插入一条数据
#qsize()方法:拿到队列的个数
q.put('shi')
q.put('123')
print(q.qsize())
#从里边拿数据
print(q.get())

七、函数
在学习函数之前,一直遵循:面向对象编程,即:根据业务逻辑从上到下实现功能,其往往用一段代码来实现指定功能,
开发过程中最常用的功能就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下:
  while True:
    if cpu利用率 > 90%:
      #发送邮件提醒
      连接 邮件服务器
      发送邮件
      关闭连接
     if 硬盘使用空间 > 90%
      #发送邮件提醒
      连接邮件
      关闭连接
      if 内存占用 > 80%
      #发送邮件提醒
      连接邮件
      关闭连接

  定义函数:
  def name():
try方法:(首先执行try方法中的代码,如果代码错误则执行except中的代码)
try:
  ...
except Exception:
  ...

函数发送邮件示例:
 
#!/usr/bin/env python
# encoding: utf-8
#函数:自定义函数 函数格式
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def mail():
ret = 123
try:
msg = MIMEText('收到即为成功','plain','utf-8')
msg['From'] = formataddr(["史冬",'sd880413@sina.cn'])
msg['To'] = formataddr(["sd", '980653381@qq.com'])
msg['Subject'] = "测试函数邮件"

server = smtplib.SMTP("smtp.sina.cn",25)
server.login("sd880413@sina.cn","shidong00")
server.sendmail('sd880413@sina.cn',['980653381@qq.com',],msg.as_string())
server.quit()
except Exception:
ret = 456
return ret

ret = mail()

if ret:
print("发送成功!!")
else:
print("发送失败!!")



如果一个函数中没有return,那么函数会返回None
return放在函数和方法中,一遇到return值,那么return后的代码则不会执行:return——1、中断函数操作2、返回函数值
#!/usr/bin/env python
# encoding: utf-8
#无参数
#show(): -->show()

# 一个参数
# def show(arg):
# print(arg)
# show('kkkk')

#两个参数
# def show(arg,xxx):
# print(arg,xxx)
# show('kkkk','777')
#默认参数,给形参加上一个数值,如果在调用的时候不指定参数,那么就会返回
#形参的指定值,默认参数必须放在最后。
# def show(a1,a2=888):
# print(a1,a2)
# show(33)
# show(22,44)

#指定参数:
# def show(a1,a2):
# print(a1,a2)
# show(a2=23,a1=111)

#动态参数:参数也可以是列表,一颗星代表把所有的参数自动转换成一个元组
#两个星代表把传入的所有参数全都转换成一个字典
#一颗星:
# def show(*arg):
# print(arg,type(arg))
# show(1,2,3,3,4,5,7,)

#两颗星
# def show(**arg):
# print(arg,type(arg))
# show(a1=88,uu=213)

#一星、两星共用
def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
show(1,2,3,3,2,111,n=2,a=5)
结果:
(1, 2, 3, 3, 2, 111) <class 'tuple'>
{'a': 5, 'n': 2} <class 'dict'>
示例:
#一星、两星共用
def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
#show(1,2,3,3,2,111,n=2,a=5)
l = [11,22,33,44]
d = {'n1':88,'alex':'sb'}
#如果直接添加参数,那么可能会被系统默认为是元组或者列表,
#字典也会加入到一星的动态参数中,如果想要对应加入,如:字典要
#放到两星参数中,则采用如下方法
show(*l,**d)
结果:
(11, 22, 33, 44) <class 'tuple'>
{'n1': 88, 'alex': 'sb'} <class 'dict'>

 使用动态参数实现字符串格式化:
#字符串格式化,并传入动态参数
s1 = "{0} is the best {1}"
resul = s1.format('shidong','man')
print(resul)


结果:
shidong is the best man

或者 如:
#字符串格式化,并传入动态参数
s1 = "{0} is the best {1}"
l1 = ['shidong','winner']
#resul = s1.format('shidong','man')
resul = s1.format(*l1)
print(resul)

结果:
shidong is the best winner

或者 如:
s1 = "{name} is {acter}"
result = s1.format(name = 'shidong',acter = 'successful')
print(result)
结果:
shidong is successful
如果是参数是字典,需要加两星
s1 = "{name} is {acter}"
d = {'name':'shidong','acter':'successful'}
result = s1.format(**d)
print(result)
结果:
shidong is successful

八、lambda表达式:简单函数的简单表示
例如:
lambda表达式:
func = lambda a :a + 1
#创建形式参数a
#函数内容,a + 1 并把结果return
ret = func(98)
print(ret)
结果:
99

九、内置函数

这些内置函数不需要导入任何模块就能使用。

abs():绝对值:
a = -1
ret = abs(a)
print(ret)


all():判断元素,如果所有都为真才为真,如果为空或者None也为假
查看真假用bool
例如:

any():只要里边有真的就为真

ascii() :可以得到一个返回值

 ascii(8) 相当于int.__repr__()

bin():表示二进制

>>>bin(10)

‘0b1010’

bool():布尔

bytearray():把传入的字符串、列表转换成字节数组

一个汉字需要占用3个字节

ret = bytearray('史冬',encoding='utf-8')
print(ret)


结果:bytearray(b'\xe5\x8f\xb2\xe5\x86\xac')

 callable():函数 查看函数儿能否被调用,是否可执行

例如:

func = lambda a : a + 1
print(func(2))
print(callable(func))


结果:
3
True
chr() 和ord() 两个要经常一起用,一个是把数字转换成ASCII码,一个是把ASCII转换成数字
chr():把数字转换成字符,ord()把字符转换成数字
import random
a = random.randint(97,120)
b = chr(a)
print(a,b)

compile():编译用到的

enumerate():函数会添加一个序列用来记录序列,例如:

li = ["alex","shidong","xian"]
for i,item in enumerate(li,1):
print(i,item)
结果:
1 alex
2 shidong
3 xian
eval()函数:可以用于计算Excel表格中的运算,例如:
a = eval('6*8')
print(a)


结果:
48

map:

map示例:map左边有多少然后经过条件后,右边相对应的过滤出来,例如:

li = [11,22,33,44,]
new_li = map(lambda x : x + 100,li)
l = list(new_li)
print(l)
结果:
[111, 122, 133, 144]

filter()函数:起到过滤作用
def func(x):
if x > 33:
return True
else:
return False

li = [11,22,33,44,]

ret = filter(func,li)
print(list(ret))


float()函数:把一个数转换成float类型
frozenset()函数:冻结集合
globals()函数:当前的全局变量
oct()函数:八进制
hex()函数:十六进制
例如:
hex(10)
结果:0xa

locals()函数:局部变量
max()函数:拿到最大值
例如:
print(max(11,22,3,34,534456345,))

结果:534456345
open()函数:打开文件
range()函数:拿到区间值
round()函数:四舍五入
zip()函数:两个对象的元素对应起来
例如:
x = [1,2,3,4,]
y = [2,3,4,5,]
ziped = zip(x,y)
wo = list(ziped)
print(wo)


结果:
[(1, 2), (2, 3), (3, 4), (4, 5)]

 

 

read():可以读取几个字节,例如:
#!/usr/bin/env python
# encoding: utf-8
f = open('test.log','r',encoding='utf-8')
#f.write('hello world!!!')
ret = f.read(2)
print(ret)
f.close()
readable():是否可读
readline():仅读取一行
seek():指定文件中指针位置
seekable():指针是否可操作
tell():获取指针位置 ()指的是字节)
例如:
#!/usr/bin/env python
# encoding: utf-8
f = open('test.log','r',encoding='utf-8')
#print(f.tell())
#ret = f.read(2)#按照字符来拿
#print(f.tell())#tell按照字节执行
f.seek(1)#让指针跳到哪儿
ret = f.read()#不加参数全部读出来,加参数指定读取字符
#print(f.tell())
f.close()
print(ret)

truncate()函数:读取指针前面的数,删除指针后面的数,然后保存源文件





 

 

 



 












 

    

 

 

转载于:https://www.cnblogs.com/sd880413/p/7521213.html

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

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

相关文章

iOS - The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

当引入第三方的框架的时候 容易产生以下问题&#xff1a; The file “XXX.app” couldn’t be opened because you don’t have permission to view it. 如图&#xff1a; 造成的原因&#xff1a; info文件中的字段Executable file 与 build settings栏中的Packaging中的Produc…

Google Guava v07范例

我们在TouK举办了一个名为“每周技术研讨会”的活动&#xff0c;即每个星期五的16:00&#xff0c;每个愿意参加的人都有一个演讲。 我们展示了我们在家学习和学习的东西&#xff0c;但是我们也设有一个公告板&#xff0c;上面有人们想听的话题。 上周MaciejPrchniak谈论了Cloju…

推荐一些经过实践检验的学习方法

作者做了多年的Java培训教师&#xff0c;也接触过不少初学者&#xff0c;根据多年的教学互动经验&#xff0c;总结了一些能少走弯路的学习方法&#xff0c;供大家参考。 第一&#xff0c;是要多学多练&#xff0c;这似乎是废话&#xff0c;但真正能非常上心学习的人还真是少数&…

使JFrame透明

首先创建一个带有滑块的框架&#xff0c;该滑块将用于设置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaultCloseOper…

第一次作业之成员介绍

Lab205的新鲜血液 很理所当然的&#xff0c;实验室的4枚“小鲜肉”在现代软工的课程上组成了一个team&#xff0c;作为一个负责的team长&#xff0c;我当然要放上组员们的自述啦&#xff01;&#xff08;为什么不是他述&#xff0c;╭(╯^╰)╮&#xff0c;谁让我是个傲娇的组长…

java自定义分页标签_自定义分页标签--仿javaeye分页效果

效果如图&#xff1a;1、JSP规范1.1版本后增加了自定义标签库。实现自定义标签的步骤(1)开发自定义标签处理类。(2)建立*.tld文件。(3)在web.xml中增加自定义标签的定义。(4)在jsp中使用自定义标签。2、自定义标签类(1)继承javax.servlet.jsp.tagext.TagSupport(2)标签类属性&a…

Java隐藏代码

不久前&#xff0c;我遇到了字符串中不可见字符的问题。 因为它们是不可见的&#xff0c;所以它们确实会引起混乱。 String a "Hello\u200e";String b "Hello\u200f";System.out.println(\ a " and " b " are length " a.length…

201521123052《Java程序设计》第5周学习总结

1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点。 1.2 可选&#xff1a;使用常规方法总结其他上课内容。 学习了更多markdown的知识 参考资料: 百度脑图 XMind 2. 书面作业 作业参考文件下载 1.代码阅读&#xff1a;Child压缩包内源代码package parent;publi…

Deepin安装Curl的方法

Deepin安装Curl的方法 以Deepin为例&#xff0c;只需一条命令即可&#xff1a; sudo apt-get install curl libcurl3 libcurl3-dev php5-curlposted on 2017-09-15 23:22 MissA-VeryGood 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/MissA-VerGood/p/752911…

亚信联创java面试题_亚信联创面试题及答案

1. Vector & ArrayList1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe)&#xff0c;而ArrayList的方法不是&#xff0c;由于线程的同步必然要影响性能&#xff0c;因此,ArrayList的性能比Vector好。2) 当Vector或ArrayList中的元素超过它的初始大小时,…

HTTP协议之http状态码详解

什么是HTTP状态码 HTTP状态码的作用是&#xff1a;Web服务器用来告诉客户端&#xff0c;发生了什么事。 状态码位于HTTP Response 的第一行中&#xff0c;会返回一个”三位数字的状态码“和一个“状态消息”。 ”三位数字的状态码“便于程序进行处理&#xff0c; “状态消息”更…

有用的Ant构建标签

问题&#xff1a; 如何在ant文件中执行以下任务&#xff1f; 制作zip文件。 运行命令。 将文件复制到远程计算机。 在远程Linux机器上运行命令。 打开输入框并响应输入值。 拨打蚂蚁电话。 答案&#xff1a; 1.制作zip文件&#xff1a; 以下是在ant中制作zip文件的xml…

poj-2955-Brackets-区间DP

poj-2955-Brackets-区间DP BracketsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9014 Accepted: 4829Description We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a regular brackets sequence,if s …

Python调用(运行)外部程序

在Python中可以方便地使用os模块运行其他的脚本或者程序&#xff0c;这样就可以在脚本中直接使用其他脚本&#xff0c;或者程序提供的功能&#xff0c;而不必再次编写实现该功能的代码。为了更好地控制运行的进程&#xff0c;可以使用win32process模块中的函数。如果想进一步控…

Java中已检查和未检查的异常

Java有两种类型的异常-已检查和未检查。 简而言之&#xff0c;选中的是指开发人员可以从异常中合理恢复的情况&#xff0c;而未选中的异常是无法处理的编程错误。 本文介绍了何时使用哪种。 但这不是那么简单–受检查的异常使代码变得“丑陋”。 它们迫使开发人员编写try / cat…

CCF - 201403-3 - 命令行选项

问题描述 试题编号&#xff1a;201403-3试题名称&#xff1a;命令行选项时间限制&#xff1a;1.0s内存限制&#xff1a;256.0MB问题描述&#xff1a; 问题描述请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项。每个命令行由若干个字符串组成,它们之间恰好由一个空…

java 枚举 values_JAVA 枚举运用一 values方法

importjava.lang.reflect.Method;importjava.lang.reflect.Type;importjava.util.Set;import java.util.*;public classEnumJavaClass {public enumEnumClass{One("参数变量枚举一"),Two("参数变量枚举二"),Three("参数变量枚举三");privateStri…

telnet测试端口是否正常打开

点击计算机的开始菜单--》运行 &#xff0c;输入CMD命令&#xff0c;然后确定。打开cmd命令行。 输入telnet测试端口命令&#xff1a; telnet IP 端口 或者 telnet 域名 端口 回车 如果端口关闭或者无法连接&#xff0c;则显示不能打开到主机的链接&#xff0c;链接失败 端口…

Linux历史,安装,分区,版本

Linux 历史 1970年是 UNIX元年&#xff0c;这一年 Kenneth Lane Thompson 和 Dennis Ritchie 合作编写了UNIX系统。Stallman 发起了GNU 计划&#xff0c;他本人开发了Emacs, GCC, GDB.Minix&#xff1a;教学用的类UNIX系统&#xff0c;由于UNIX是收费的且价格昂贵&#xff0c;因…

放弃Eclipse Juno

在上一个博客中&#xff0c;我发布了有关Eclipse 4.2 Juno设置的信息。 万一我需要重新安装其他东西&#xff0c;也可以作为参考。 当时我没有谈论的是我与Juno共同遇到的问题。 我以为这是我自己的安装程序&#xff0c;很麻烦&#xff0c;但是此后并没有太大改善。 我遇到的主…