python用sort排序从最后一个元素判断去重_python数据类型及常用方法

一、数字

数字类型包含整型、浮点型,还包含不太常用的长整型、复数。

二、字符串

定义:在单引号\双引号\三引号内,由一串字符组成msg='hello world'

1、切片

print(msg[1:8])     #从下标为1的字符开始取,顾头不顾尾,所以取到第七个字符,所以得到ello wo,空格也是一个字符

print(msg[1:8:2])   #从下标为1的字符开始取,顾头不顾尾,所以取到第七个字符,步长为2,取一个跳过一个,得到el o

print(msg[0])        #取出下标为0的字符、就是第一个字符,得到h

print(msg[-1])       #取出最后一个字符,得到d

2、长度print(len(msg))      #变量msg的字符串长度,得到11

3、成员运算in和not in,看所取得字符是否在变量定义的字符串里print('llo' in msg)          #‘llo’在变量定义的字符串里,所以返回True

4、移除空白strip

name='**********hello***********'

print(name.strip('*'))         #去掉hello两边的*

print(name.lstrip('*'))       #去掉hello左边的*

print(name.rstrip('*'))       #去掉hello右边的*

#和用户交互常用的情况如下

name=input('user: ').strip()  #对用户输入的字符串去掉两边的空格

print(name)

5、切分

info='root:x:0:0::/root:/bin/bash'

res=info.split(':')           #以冒号为分隔符对字符串进行分割,分割后会变成列表的形式

res=info.split(':',1)         #以冒号为分隔符对字符串进行分割,并指定分割最大次数为1,方便取出第一个冒号前的字符串

res=info.rsplit(':',1)        #从右进行切分,切分一次,结果是按照最后的冒号把字符串切为两部分

6、循环

for i in range(0,5,2):             #0到4之间,步长为2,所以得到结果0 2 4

print(i)

7、lower,upperprint('AbcD'.lower())     #把字符串全部显示成小写,结果是abcd

print('aaa'.upper())      #把字符串全部显示成大写,结果是AAA

8、startswith,endswith

msg='tom is boy'

print(msg.startswith('tom'))    #开头的是否是tom,返回True或者False,所以返回True

print(msg.startswith('t'))          #开头的是否是t,所以返回True

print(msg.endswith('boy'))     #末尾的是否是boy,所以返回True

9、join

l=['root', 'x', '0', '0']

':'.join(l)                              #把列表l里的元素通过冒号合并成一个字符串,  列表l里的元素必须全是字符串,否则报错

10、replacemsg='tom say my name is tom'

msg=msg.replace('alex','leader',1)            #用leader替换tom,并且只替换一个

print(msg)

11、isdigit判断是否是数字age=input('>>: ').strip()

if age.isdigit():                                   #用户输入的是数字以后,将其转化成整型

age=int(age)

else:

print('必须输入数字')

print(age,type(age))

三、列表

1、定义:[]内可以有多个任意类型的值,逗号分隔name=['zhao','qian','sun','li']

2.方法append和extend,insert

name.append('ni')            #列表里添加元素ni

l=['song','zhang']

name.extend(l)                 #列表里添加多个元素

print(name)

name.insert(1,'wang')        #插入元素wang,下标为1

3、方法indexprint(name.index('zhao'))  #显示元素zhao对应的下标

4、remove和pop

name.remove('li')               #删除元素li,但是拿不到取走的元素

print(name)

name.pop()                       #删除并拿到结果,取走一个值

5、循环

for item in name:

print(item)

6、clearname.clear()        #清空列表

7、copy

l=name.copy()   #拷贝列表name,将结果作为变量l的值

print(l)

8、count

print(name.count('li'))        #统计元素li出现在列表里几次

9、reversename.reverse()                  #将列表name元素倒向显示,结果为['li', 'sun', 'qian', 'zhao']

10、sort排序

l=[1,10,4,11,2,]

l.sort()              #对列表里的元素排序

print(l)

l.sort(reverse=True)    #对列表里的元素倒向排序

print(l)

四、元组

1、与列表类型比,只不过[]换成()

存多个值,对比列表来说,元组不可变,主要是用来读age=(11,22,33,44,55)

1、index

print(age.index(11))     #取出元组里元素11对应得下标

print(age.index(3333))   # 元素不存在时报错ValueError: tuple.index(x): x not in tuple

print(age[0:3])           #取出元组里元素下标为0,1,2的子元组

2、长度lenprint(len(age))            #得到元组元素的个数

3、成员运算in和not inprint(11 in age)           #判断元素11是否在元组里

4、循环

for item in age:

print(item)

5、countprint(age.count(33))       #判断元素33出现的次数

6、实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入

msg_dic={

'apple':10,

'tesla':100000,

'mac':3000,

}

goods=[]                         #购物车,准备一个空列表

while True:

for k in msg_dic:

print(k,msg_dic[k])

choice=input('name: ').strip()

if len(choice)==0 or choice not in msg_dic:          #如果用户输入字符为空或者输入的不是指定的商品,就让用户重新输入

continue

while True:

num=input('number: ').strip()

if num.isdigit():

break

goods.append((choice,msg_dic[choice],int(num)))      #注意括号容易少写

print('购物车',goods)

五、字典

1、定义:key必须是不可变类型(int,float,str,tuple),value可以是任意类型info={'name':'egon','age':18,'sex':'male'}

2、fromkeysinfo={}.fromkeys(['name','age','sex'],None)    #快速创建字典,前面列表的每个元素会和none组成字典的一个元素

3、修改字典的值info['age']=22             #指定key,等于一个值

4、长度lenprint(len(info))   #判断字典的长度,即有几个元素

5、成员运算in和not inprint('name' in info)

6、删除pop

print(info.pop('name'))      #取出字典key为name的元素

print(info)                   # 看到元素为name的键值对已经删掉了

7、popitem和keys、values

print(info.popitem())          #取出后面的键值对,结果是('sex', 'male')

print(info.keys())           #取出字典里所有的key,结果是dict_keys(['name', 'age'])

print(list(info.keys())[1])   #取出字典里所有key的组合,转为列表,再根据下标取出对应得key,结果是age

print(info.values())         #取出字典里所有的value,结果是dict_values(['egon', 18])

print(list(info.values())[1])   #取出字典里所有value的组合,转为列表,再根据下标取出对应得value,结果是18

print(list(info.items())[1])    #取出键值对,最后的结果是('age', 18)

8、循环

info={'name':'egon','age':18,'sex':'male'}

for k in info:                        #循环key,最后通过key取到values

print(k,info[k])

9、有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中

nums=[11,22,33,44,55,66,77,88,99,90]

d={'k1':[],'k2':[]}

for num in nums:

if num > 66:

d['k1'].append(num)

if num 

d['k2'].append(num)

print(d)

六、集合

1、定义和原则

集合:可以包含多个元素,用逗号分割

集合的元素遵循三个原则:

1:每个元素必须是不可变类型(可hash,可作为字典的key)

2:  没有重复的元素

3:无序

pythons={'alex','egon','yuanhao','tom','jim'}

linuxs={'tom','sam'}

2、长度print(len(pythons))               #长度即是集合 python的元素个数,所以为5

3、成员运算in和not inprint('alex' in pythons)         #判断alex是否在python集合中,所以结果为True

4、交集print(pythons & linuxs)       #同时在两个集合中的元素,所以结果是{'tom'}

5、合集print(pythons | linuxs)         #两个集合的所有元素,重复的显示一次,所以结果是{'tom', 'jim', 'egon', 'sam', 'alex', 'yuanhao'}

6、差集print(pythons - linuxs)        #python中的元素减去linuxs中的元素,剩下的结果是{'jim', 'yuanhao', 'egon', 'alex'}

7、对称差集print(pythons ^ linuxs)      #没有同时在两个集合中的元素,即所有元素减去交集的结果是{'egon', 'sam', 'jim', 'alex', 'yuanhao'}

8、父集>,>=

a={1,2,3}

b={1,2}

print(a>=b)               #判断集合a是否包含集合b的元素,所以结果为True

9、子集

10、去重

l=['a','b',1,'a','a']

print(set(l))            #转为集合的形式,元素一样的显示一次,所以结果是{1, 'a', 'b'},结果没有按照以前的顺序

11、循环

for i in l:

print(i)

12、用之前的方法去重并保持顺序

new=[]

for i in l:

if i not in new:

new.append(i)

print(new)

13、借助集合实现去重并保持顺序

new=[]

s=set()

for i in l:

if i not in s:

s.add(i)

new.append(i)

print(new)

14、集合的其他用法

s1={1,2,3}

s2={1,2}

print(s1-s2)             #取得s1和s2的交集,不改变原来的集合的元素

print(s1.difference(s2))  #取s1和s2不同的地方,不改变原来的集合的元素

s1.difference_update(s2) #对s1赋值,改变了s1的元素,结果s1就成了{3}

print(s2.pop())          #随机从集合s2中取走一个元素

s2.add('b')             #给集合s2增加一个元素b

s2.discard('b')          #从集合中删除元素b,删除的元素不存在不会报错

s2.remove('b')          #从集合中删除元素b,删除的元素不存在则报错

s1={1,2,3,4,5,'a'}

s2={'b','c',}

print(s1.isdisjoint(s2)) #两个集合没有共同部分时,返回值为True

s2.update({6,7})        #集合s2增加元素6和7,一次添加多个元素,所以结果为{'c', 'b', 6, 7}

print(s2)

七、字符编码

1、存取文件不乱码的法则:用什么编码存的,就要用什么编码读

2、encode和decode

unicode-----encode----->gbk

gbk-------->decode----->unicode

3、解释器的字符编码

python3解释器默认使用的字符编码是utf-8

python2解释器默认使用的字符编码是ascii

4、

python2的str就是python3的bytes

python2的unicode就是python3的str

八、文件处理

1、打开文件读,python进程要访问文件,会向操作系统提交读请求,操作系统取到的数据交给进程,进程开辟内存空间存放数据,所以最后要关闭文件,回收操作系统的资源

f=open(r'C:\Users\song\Desktop\a.txt','r',encoding='utf-8')          #最前面的r表示保持字符的本意,不然'\'就需要转意

data=f.read()

print(data)

f.close() #文件关闭,回收操作系统的资源

print(f.readline(),end='')      #逐行读,文件大时,不能一次读所有数据,就需要逐行读了

2、为避免忘记关闭操作系统打开的文件,可以直接让程序关闭with open('a.txt','r',encoding='utf-8') as f:

3、写操作,每次执行都会清掉原来的数据,然后写入新的内容

f=open(r'C:\Users\song\Desktop\a.txt','w',encoding='utf-8')

f.write('11111\n')

f.write('1111\n2222\n3333\n')           #写入多行时,行尾用'\n'标识

f.close()

原文:http://blog.51cto.com/qidian510/2049727

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值