x=11
print(id(x))
x=12
print(id(x))
作用:名字,性别,国籍,地址等描述信息
定义:在单引号\双引号\三引号内,由一串字符组成
name=‘hello world‘
该类型总结
1 只能存一个值
2 有序
3 不可变:值变,id就变。不可变==可hash
按索引取值(正向取+反向取) :只能取
print(msg[0],type(msg[0]))
print(msg[-1])
切片(顾头不顾尾,步长)
print(msg[0:3]) #>=0 <3
print(msg[0:7]) #>=0 <7
print(msg[0:7:1]) #>=0 <7
print(msg[0:7:2]) #hello w #hlow
print(msg[:])
print(msg[5:1:-1])
print(msg[-1::-1])
长度len
print(msg.__len__())
print(len(msg)) #msg.__len__()
成员运算in和not in
msg='hello world'
print('llo' in msg)
print('llo' not in msg)
移除空白strip
password=' alex3714 '
print(password.strip())
password=input('>>: ').strip()
password='alex 3714 '
print(password.strip())
切分split
user_info='root:x:0:0::/root:/bin/bash'
res=user_info.split(':')
print(res[0])
cmd='get /root/a/b/c/d.txt'
print(cmd.split())
file_path='C:\\a\\d.txt'
print(file_path.split('\\',1))
file_path='C:\\a\\d.txt'
print(file_path.rsplit('\\',1))
循环
for i in range(len(msg)): #0 1 2
print(msg[i])
strip,lstrip,rstrip
print("**alex****".strip('*'))
print("**alex****".lstrip('*'))
print("**alex****".rstrip('*'))
lower,upper
print('ALeX'.lower())
print('aaa'.upper())
startswith,endswith
msg="hello world"
print(msg.startswith('hello'))
print(msg.startswith('h'))
print(msg.endswith('world'))
format的三种玩法
print('my name is %s my age is %s' %('alex',18))
print('my name is {} my age is {}'.format('alex',18))
print('my name is {} my age is {}'.format(18,'alex'))
print('{0} {1} {0}'.format('alex',18))
print('my name is {name} my age is {age}'.format(age=18,name='male'))
split rsplit
name='root:x:0:0::/root:/bin/bash'
print(name.split(':')) #默认分隔符为空格
name='C:/a/b/c/d.txt' #只想拿到顶级目录
print(name.split('/',1))
name='a|b|c'
print(name.rsplit('|',1)) #从右开始切分
join
info='root:x:0:0'
l=info.split(':')
print(':'.join(l))
l=[1,2,3]
print(':'.join(l)) #报错:只有在列表内的元素全是字符串类型,才能用join拼接
replace
name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','SB',1)) #1为指定替换第几个, 如果不写就全部替换
isdigit
age=input('>>: ').strip()
print(age.isdigit()) #age='123'
if age.isdigit():
age=int(age)
else:
print('必须输入数字')
练习
# 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)
name = " aleX"
# 1) 移除 name 变量对应的值两边的空格,并输出处理结果
# 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果?
# 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果?
# 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
# 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。
# 6) 将 name 变量对应的值变大写,并输出结果?
# 7) 将 name 变量对应的值变小写,并输出结果?
# 8) 请输出 name 变量对应的值的第 2 个字符?
# 9) 请输出 name 变量对应的值的前 3 个字符?
# 10) 请输出 name 变量对应的值的后 2 个字符??
# 11) 请输出 name 变量对应的值中 “e” 所在索引位置??
# 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
# 1. print(name.strip())
# 2. print(name.startswith('al'))
# 3. print(name.endswith('X'))
# 4. print(name.replace('l','p'))
# 5. print(name.split('l'))
# 6. print(name.upper())
# 7. print(name.lower())
# 8. print(name[1])
# 9. print(name[:3])
# 10. print(name[-2:])
# 11. print(name.index('e',1))
# 12. print(name[:-1])
作用:多个装备,多个爱好,多门课程
定义:[]内可以有多个任意类型的值,逗号分隔
该类型总结
1 可以存多个值,值都可以是任意类型
2 有序
3 可变:值变,id不变。可变==不可hash
优先掌握的操作:
按索引存取值(正向存取+反向存取):即可存也可以取
l=['zhao','qian','sun','li',5,6]
切片(顾头不顾尾,步长)
长度
print(l.__len__())
print(len(l))
成员运算in和not in
print('zhao' in l)
追加
l.append(6)
print(l )
删除
#单纯的删除
del l[0]
print(l)
res=my_girl_friends.remove('yuanhao')
print(my_girl_friends)
print(res)
print(my_girl_friends)
#del和remove都没有返回值, 只是删除
#删除并拿到结果:取走一个值
res=l.pop(2)
res=l.pop() #默认删除并返回列表最后一个值
print(res)
# my_girl_friends=['alex','wupeiqi','yuanhao',4,5]
# print(my_girl_friends.pop(0)) #'alex'
# print(my_girl_friends.pop(0)) #'wupeqi'
# print(my_girl_friends.pop(0)) #'yuanhao'
循环
my_girl_friends=['alex','wupeiqi','yuanhao',4,5]
i=0
while i < len(my_girl_friends):
print(my_girl_friends[i])
i+=1
for item in my_girl_friends:
print(item)
insert
l=['zhao','qian','sun','li',5,6]
l.insert(0,'wang')
print(l)
clear
l.clear()
print(l)
copy
l2=l.copy()
print(l2)
count
l.insert(0,'zhao')
print(l.count('zhao'))
extend
l1=['zhou','wu']
l.extend(l1)
l.extend('hello')
print(l)
# ['zhao', 'qian', 'sun', 'li', 5, 6, 'zhou', 'wu', 'h', 'e', 'l', 'l', 'o']
index
print(l.index('wu'))
print(l.index('wuuuu'))
reverse
l.reverse()
print(l)
sort
从python2.4开始,list.sort()和sorted()函数增加了key参数来指定一个函数,此函数将在每个元素比较前被调用。 例如通过key指定的函数来忽略字符串的大小写:
>>> sorted("This is a test string from Andrew".split(), key=str.lower)
[‘a‘, ‘Andrew‘, ‘from‘, ‘is‘, ‘string‘, ‘test‘, ‘This‘]
key参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较。这个技术是快速的因为key指定的函数将准确地对每个元素调用。
更广泛的使用情况是用复杂对象的某些值来对复杂对象的序列排序,例如:>> student_tuples = [ ('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10), ] >> sorted(student_tuples, key=lambda student: student[2]) # sort by age [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
l=[1,10,4,11,2,]
l.sort(reverse=True)
print(l)
x='healloworld'
y='he2'
print(x > y)
匿名函数
##### 按年龄排序
l=[
{‘name‘:‘alex‘,‘age‘:84},
{‘name‘:‘oldboy‘,‘age‘:73},
{‘name‘:‘egon‘,‘age‘:18},]
l.sort(key=lambda item:item[‘age‘],reverse=False)
作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
定义:与列表类型比,只不过[]换成()
age=(11,22,33,44,55) #本质age=tuple((11,22,33,44,55))
该类型总结
1 可以存多个值,值都可以是任意类型
2 有序
3 不可变:值变,id就变。不可变==可hash
print(age[0:3])
print(age)
age=(11,22,33,44,55)
print(len(age))
age=(11,22,33,44,55)
print(11 in age)
for item in age:
print(item)
用途:存放多个值,key:value,存取速度快
定义:key必须是不可变类型(int,float,str,tuple),value可以是任意类型
info={'name':'egon','age':18,'sex':'male'}
#info=dict({'name':'egon','age':18,'sex':'male'})
该类型总结
1 可以存多个值,值都可以是任意类型,key必须是不可变类型
2 无序
3 可变:值变,id不变。可变==不可hash
按key存取值:可存可取
d={'name':'ross'}
print(d['name'])
d['age']=18
print(d)
长度len
info={'name':'ross','age':18,'sex':'male'}
print(len(info))
info={'name':'ross','age':18,'sex':'male'}
print('name' in info)
info={'name':'ross','age':18,'sex':'male'}
print(info.pop('name')) #指定删除name, 并返回name对应的值
print(info)
print(info.popitem()) #('sex', 'male') #随机删除, 因为字典是无序的
print(info)
info={'name':'ross','age':18,'sex':'male'}
print(info.keys())
print(list(info.keys())[0])
print(list(info.values()))
print(list(info.items()))
info={'name':'egon','age':18,'sex':'male'}
for k in info:
print(k,info[k])
for k,v in info.items():
print(k,v)
get和pop
info={'name':'egon','age':18,'sex':'male'}
print(info['hobbies']) #没有hobbies这个key, 会报错
print(info.get('hobbies','没有')) #使用get方法, 如果没有key, 会返回设定的值
print(info.pop('name1',None)) #pop会删除对应key, 如果没有, 会返回设定的值
update: 字典 update() 函数把字典参数d的 key/value(键/值) 对更新到字典 info 里
info={'name':'egon','age':18,'sex':'male'}
d={'x':1,'y':2,'name':'EGON'}
info.update(d)
print(info)
setdefault
1:key存在,则不赋值,key不存在则设置默认值
2:key存在,返回的是key对应的已有的值,key不存在,返回的则是要设置的默认值
info={'name':'egon','sex':'male'}
value=info.setdefault('age',18)
print(value)
print(info)
小示例
info={'name':'egon',}
info['hobbies']=[]
info['hobbies'].append('music')
info['hobbies'].append('read')
print(info)
info={'name':'egon',}
if 'hobbies' not in info:
info['hobbies']=[]
else:
info['hobbies'].append('music')
hobbies_list=info.setdefault('hobbies',[])
print(hobbies_list)
hobbies_list.append('play')
hobbies_list.append('read')
print(info)
#1 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
#即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
l=[11,22,33,44,55,66,77,88,99,90]
d={'k1':[],'k2':[]}
for i in l:
if i < 66:
d['k1'].append(i)
if i >= 66:
d['k2'].append(i)
print(d)
# 2 统计s='hello alex alex say hello sb sb'中每个单词的个数
# 结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
s='hello alex alex say hello sb sb'
l=s.split()
d={}
for i in l:
d.setdefault(i,l.count(i))
print(d)
s='hello alex alex say hello sb sb'
l=s.split()
d={}
for i in l:
if i in d:
d[i]+=1
else:
d[i]=1
print(d)
# 简单购物车,要求如下:
# 实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,
# 如果输入为空或其他非法输入则要求用户重新输入
msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}
goods=[]
while True:
for k in msg_dic:
print(k,msg_dic[k])
choice=input('what do you want to buy? : ')
if choice=='q':break
if not choice or choice not in msg_dic:continue
num=input('how many do you want to buy? : ')
if not num.isdigit():continue
t=(choice,num,msg_dic[choice])
goods.append(t)
print(goods)
长度len
s={1,2,3,1} #s=set({1,2,3,1})
print(len(s))
成员运算in, not in
names={'egon','alex'}
print('egon' in names)
合集 |
pythons={'egon','axx','ysb','wxx'}
linuxs={'egon','oldboy','oldgirl','smallboy','smallgirl'}
print(pythons|linuxs)
&交集:同时报名两门课程的学生
print(pythons & linuxs)
print(pythons.intersection(linuxs))
^对称差集:没有同时报名两门课程
print(pythons ^ linuxs)
print(pythons.symmetric_difference(linuxs))
-差集:只报名python课程的学生
print(pythons - linuxs)
print(pythons.difference(linuxs))
父集:>,>=,子集:<,<=
s1={1,2,3}
s2={1,2,}
print(s1 >= s2)
print(s1.issuperset(s2))
print(s2.issubset(s1))
linuxs={'egon','oldboy','oldgirl','smallboy','smallgirl'}
for student in linuxs:
print(student)
原文:https://www.cnblogs.com/peitianwang/p/10562053.html