新手学习Python第五天-新手笔记 (七天学完)

昨晚把雨伞放在实验室了 ,所以今早跟室友一起打伞来的

------- 到达实验室 08:10晚了一些吗,又刚刚复习完做昨天的学习1笔记 ------

现在是北京时间 08:41 ------开始学习-------

1.字典的特点:

1.1 key不允许重复 

举个例子:

d = {'name':"张三",'name':'李四'}
print(d)

从程序中可以看出,相同的key值,取得是最后一个key为主。

1.1.2 Value可以重复

比如

d = {'name':"张三",'names':'张三'}
print(d)

你看都可以输入张三的value。

1.1.3是不可变序列

意思是不可以插入。

d = {'name':"张三",'names':'张三'}
print(d)
lst=[10,20,30]
lst.insert(1,100)
print(lst)
d={lst:100}
print(d)

标红色的可以插入,但是list是一个可变的对象,是不可以计算hash值的。所以最后两行代码运行就会报错。

字典也是一个可变对象,只不过对里面的内容必须是不可变的,包括str和int

这里还需要说一下:字典的结构是需要计算hash值的,所以第一个值和第二个值离得会很远,会有很多空缺,造成一定的空间浪费,但是字典的查找速度还是很快的。

1.2字典生成式:

内置函数zip()

语法结构:

keys=[]

values=[]

{ x:y for x,y in zip(keys,values) }

例如:

item=['Fruit','BOOK','Other']
prices=[98,85,66]
d= {x:y for x ,y in zip(item,prices)}
print(d)

一一对应

但是你看key既有大写,还有小写 想要统一化。

那就是 { x.upper() :y for x,y in zip(keys,values) }

标红的这里是我后加上去的,就会统一化。

但是大家有没有想过。加入这俩key和values数量不等怎么办?

那就是以少数的那个为准。

例如:

item=['Fruit','BOOK','Other']
prices=[98,85,66,84,69]
d= {x:y for x ,y in zip(item,prices)}
print(d)

结果一目了然。

总结一下:

字典的创建:1.使用{}花括号。2.内置函数dict()3.字典生成式

常用操作:获取value:1.字典名[key] 2.字典名+.+get(key)

删除key-value:1. del字典名[key]

修改/新增:字典名[key]=value

判断:in / not in

2.元组

是一个不可变序列,是python内置的数据结构之一

这里来总结下序列的两种分类:

不可变序列;str和元组:没有增删改操作的,对象地址发生改变

可变序列:列表和字典,可进行增删改,对象地址不发生更改

形式如: t = ('python','hello',90)

从外观角度而言,元组和列表只差在一个括号上

2.2元组的创建方式

1.直接小括号

t = ('python','hello',90)

2.使用内置函数

t = tuple(('python','hello',90)

3.只包含一个元组的元素需要使用逗号和小括号

t=(10,)

我把这三种方式整理了下:

d = ('python','hello',98)
print(d)
print(type(d))
d= 'python','hello'
print(d)
print(type(d))
d1=tuple(('python','hello',98))
print(d1)
d2=('python')
print(d2)
print(type(d2))
d3=('pythpn',)
print(d3)
print(type(d3))

其中有一个是不需要+()的。也可以,以及单个元素记得+,

这里还有空元组

我们再回顾一下空列表、空字典创建方式‘

lst=[]

lst1=list()

lst=[]
lst1=list()
d={}
d1=dict()
t=()
t1=tuple()
print('空列表',lst,lst1,'空字典',d,d1,'空元组',t,t1)

2.3关于元组设计成不可变序列:

元组只能让人看,不能修改,所以不需要上锁。

而像列表、字典能修改,可是得加锁,进一个人就上锁,其他人必须排队。

但是元组中会有列表这等元素,不能修改,但可以增删。

比如:

t = (10,[20,30,40],50)
print(t)
print(type(t))
print(t[0])
print(t[1])
print(t[2])
t[1].append(100)
print(t[1])
t[1].remove(20)
print(t[1])

需要注意的是,索引它的位置就是:元组名+[索引的位置]。方括号

2.4 元组的遍历

元组是可迭代对象,可以使用for...in...来遍历

其中语法结构 for+你要设定的变量名+in+元组名,还要记得缩进哈

t= tuple(('python','hello',99))
for x in t:
    print(x)

意外的是:

t= tuple(('python','hello',99))
for x in t:
    print(x)
print(t[1])
print([t[1]])

    ---中午吃了昨天剩下的铁锅炖 现在是北京时间12:46 ,准备稍微休息一下,开始学习。----

醒来--13:26开始学习:

3.集合

3.1特点:

1.集合是没有value的字典

2.与列表,字典一样的可变类型序列(可增删减)

3.内置数据结构

3.2创建

3.2.1直接方式:{}

s={'python',hello',98}

2.使用内置函数 set()

s={'python','shw',99}
print(s)
print(type(s))

这里切记一点不可重复。

s={'python','shw',99,99,99}
print(s)
print(type(s))

看到没?而且顺序还变了。

3.2.2使用内置函数set()

x=set(range(6))
print(x,type(x))

3.3集合转化类型 

列表转换、元组转换、字符串转换、空集合

s1=set([1,2,3,4,55,55,66,66])
print(s1,type(s1))
s2=set((1,2,3,'hello'))
print(s2,type(s2))
s3=set({1,2,3,})
print(s3,type(s3))
s4=set('python')         可从程序中看出来是无序的
print(s4,type(s4))
s5=set()
print(s5,type(s5))

3.2相关操作(增删改)

3.2.1.判断操作

in  与 not in

s=set([1,2,3,4,55,55,66,66])
print(98 in s)
print(66 in s)
print(66 not in s)

3.2.2新增操作

add():一次添中一个元素

s.add(98)          
print(s)

update():至少添加一个元素

s.update({55,66})  增加字典
print(s)
s.update([98,'hello'])  增加列表
print(s)
s.update((52,'hello','python'))  增加元组
print(s)

3.2.3删除操作 

remove() :一次删除一个指定元素,如果指定元素不存在,报KeyError

s.remove(2)           
print(s)

discard():一次删除一个指定元素,如果指定元素不存在,不报出异常

s.discard(66)          有错误也不会报出
print(s)
s.discard(500)
print(s)

pop():一次只删除一个任意元素

s.pop()
print(s)       不可以指定

clear():清空集合

s.clear()
print(s)

空集合

运行代码如图所示:

3.3集合相等

1.符号“==”,以及!= 来表示

print(s2 == s3)
print(s2 !=s3)

2.一个集合是另一个集合的子集,使用issubset()来判断

print(s2.issubset(s))
print(s3.issubset(s))

3.一个集合是另外一个集合的超集 使用issuperset()

print(s2.issuperset(s))

4.没有交集 使用isdisjoint来判断

print((s2.isdisjoint(s3)))  有交集为False,无交集为True

程序如图:

3.4集合的数学操作

3.4.1交集  intersection or &

print(s1.intersection(s2))
print(s1 & s2)

3.4.2并集

符号:union or |

print(s.union(s2))
print(s | s2)


3.4.3差集与对称差集

s=set([1,2,3,4,55,55,66,66])
s2={1,2,3}
s3={2,65,85}
print(s.intersection(s2))
print(s & s2)
print(s.union(s2))
print(s | s2)
print(s2.difference(s))  这个是s2扣除s集合交集后剩的集合
print(s2 - s)
print(s.symmetric_difference(s2))  扣除两个集合交集之后的剩余集合
print(s ^ s2)

3.4集合生成式

语法结构:{ i*i for  i in range(1,10)}

将{} 变为[]就是集合生成式 ,没有元组生成式

集合特点就是无序的  集合元素结果也是不重复的 

4.字符串的创建与驻留机制

不可变的字符序列和元组一样

单引号 双引号 三引号定义字符串都可以,id都是一个 

1.字符串长度为0或者1 即空字符串或者为一个长度的字符串 比如a 和''

2.标识符:字母 数字 下划线   id都是一个 

3.[-5,256]之间的整数数字

4.编译时驻留

注意的是:在需要进行字符串拼接时,建议的是使用str类型的join方法。而非+

result = ""
for word in ["Hello", "world", "this", "is", "a", "test"]:
    result += word + " "
print(result)

第二种:

words = ["Hello", "world", "this", "is", "a", "test"]
result = " ".join(words)
print(result)

这里面的.join 这样来用的

总结来讲就是:语法结构: “ “.join() 也可以加个,在里面 ()加列表或者元组或者字符串都可以 

4.2字符串的常用操作:

4.2.1 index操作

第一次出现的位置

例如:

s= 'hello,hello'
print(s.index('lo'))

4.2.2 rindex

最后一次出现的位置

print(s.rindex('lo'))

一个是3 一个是9 就刚好是9的位置

4.2.3 find

第一次出现的位置,不存在返回-1 

4.2.4 rfind

最后一次出现的位置,不存在返回-1

s= 'hello,hello'
print(s.find('k'))
print(s.rfind('j'))

注意的是:都是字符串嘛 所以里面要用引号来写

4.3 字符串大小写转换的方法

4.3.1 upper()

所有字符串转成大写

a='python,HELLO'
s=a.upper()
print(s)

4.3.2 lower()

所有字符串转成小写

d=a.lower()
print(d)

4.3.3 swapcase()

所有大写字母变小写, 小写变大写

4.3.4 capitalize()

把第一个字母转换大写。其余转换小写  只是第一个字母,剩下全小写

4.3.5 title()

把每个单词的第一个字符转换为大写,把每个单词的剩余字符转换为小写。

针对每个单词而言

4.4内容对齐

4.4.1居中对齐

使用对象+.+center(math,'形状')  (math-原本长度)/2

例如:

a='python,HELLO'
s=a.center(24,'-')
print(s)

4.4.2 左对齐

使用ljust(),与居中格式一样,对象名.1just(math.'形状’) ,把形状全部用到右侧

例如:

a = 'python,HELLO'
print(a.ljust(20, '-'))

4.4.3右对齐

rjust()  str全部移动右面

例如

a = 'python,HELLO'
print(a.rjust(20, '-'))

需要注意的是,若没写形状,则默认空格。

4.4.4  0式右对齐

zfill(math)  意思是右对齐,左面用0补齐。

a = 'python,HELLO'
print(a.rjust(20, '-'))
print(a.zfill(20))
print('-8090'.zfill(8))

这里的‘-’算一位,所以左侧有三个0

4.5字符串的劈分操作

4.5.1. split

默认分割符是空格

a = 'python HELLO world'
d=a.split()
print(d)

还有的是 split('形状‘)

例如:

a = 'python|HELLO|world'
d=a.split('|')
print(d)

还可以规定最大的切割步骤

在上一步基础上,我还是完整的写一遍吧split('形状’,maxsplit=math) math=1,2,3...

例如:

a = 'python|HELLO|world'
d=a.split('|',maxsplit=1)
print(d)

这都是从左面开始劈分的。

4.5.2右面劈分 rsplit

跟左侧很类似,就差一个'r'字母而已。

a = 'python|HELLO|world'
d=a.rsplit('|',maxsplit=1)
print(d)

4.6判断字符串的方法

4.6.1判断合法的字符串

使用isidentifier() 

合法的字符串标识符是 字母、数字、下划线、汉字也是,但需要记住字母(大小写均可以)和_可以作为开头这是合理的标识符

a = 'python|HELLO|world'
print(a.isidentifier())
print('hello'.isidentifier())
print('张三_'.isidentifier())
print('123'.isidentifier())

4.6.2 判断字符串是否全部由空白字符串组成(回车、换行、水平制表符)

使用isspace()

a = 'python|HELLO|world'
print(a.isspace())
print('\t'.isspace())

4.6.3判断是否全部由字母组成

使用对象名+.+isalpha()

a = 'python|HELLO|world'
print('python'.isalpha())
print('张三'.isalpha())

总结:终于学到一半了,差不多还有两天就可以学完了。加大强度,令我欣慰的是,中午没有睡午觉哈哈哈哈,同时也祝教师节快乐,祝我的导师节日快乐。  

---------出去溜达溜达   20:17----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值