字符串拼接的几种操作
1.使用 + 进行字符串的拼接
info = 'asd'+'123'
print(info)
2.使用占位符 %占位符 %s 字符串 %d %f
name = 'Richard'
age = 18
info = '''
--------------info of %s-------------
Name:%s
Age:%s
'''%(name,name,age)
print(info)
3.使用format语句
name = 'Richard'
age = 18
info = '''
--------------info of {_name}-------------
Name:{_name}
Age:{_age}
'''.format(_name=name,_age=age)
print(info)
4.使用数字占位
name = 'Richard'
age = 18
info = '''
--------------info of {0}-------------
Name:{0}
Age:{1}
'''.format(name,age)
print(info)
pycharm下各种模块,通过ctrl+鼠标左键点击可以看到这个模块的参数和用法
变量 开辟内存空间说明
name = ‘Richard’
开辟一个内存空间放Richard,name指向这个空间的地址
**
可以使用反斜杠为行结尾的连续字符串,它表示下一行在逻辑上是本行的后续内容 :
hello = "This is a rather long string containing\n\
several lines of text just as you would do in C.\n\
Note that whitespace at the beginning of the line is\
significant."
print(hello)
字符串可以由 + 操作符连接(粘到一起),可以由 * 重复
Python 字符串不可变。向字符串文本的某一个索引赋值会引发错误,组合文本内容生成一个新文本简单而高效
切片操作有个有用的不变性: s[:i] + s[i:] 等于 s 。
>>> word[-1] # The last character
'A'
>>> word[-2] # The last-but-one character
'p'
>>> word[-2:] # The last two characters
'pA'
# -0 实际上就是 0 ,所以它不会导致从右边开始计算!
数据类型
数字、布尔值、字符串、列表、元组、字典
**
字符串
字符串就是一系列字符,可以单引号也可以双引号,为了在字符串中包含引号和撇号
制表符 \t 换行符\n
调用函数str(info) 可将非字符串值表示成字符串值
name = "my name is Richard"
print(name.capitalize()) #首字母大写
print(name.count("a")) #有多少a
print(name.center(50,"-")) #打印50个字符 不够有-补上
print(name.endswith("ex")) #判断以什么结尾
print(name.find("name")) #找位置 字符串也是可以切片的
print("Asdf".isidentifier()) #哦安短是不是一个合法的标识符、变量名
print(name.isupper()) #是否全为大写
print('X'.join(["asd","asdad"]))
print(name.ljust(50,"#"))
print(name.rjust(50,"*")) #总共50个 位置在右边 其余不够的补*
print(" asd ".strip()) #去掉两边的空格和回车
p = str.maketrans("abcdefghihdsl","123456789%$^&") #设置随机密码
print("asdasd".translate(p))
print("alex li".replace("l","L")) #对字符串进行替换
print("alex lil".rfind("l"))
print("12+23+56+456+456".split("+")) #按照某种形式对字符串进行分割
print("asd".zfill("5")) #设置位数不够左边补零
数字 整数 浮点数
Python中使用两个乘号表示乘方运算
三元运算符
result = 值1 if 条件 else 值2
如果条件为真,result = 值1,如果条件为假,result = 值2
3**2 #9
列表
列表是由一系列按特定顺序排列的元素组成的,用方括号表示列表,用逗号分隔其中的元素。
最通用的是 list ( 列表 ) ,它可以写作中括号之间的一列逗号分隔的值。列表的元素不必是同一类型。
列表是有序集合,索引从0开始,最有一个元素的索引号为-1,倒数第二个-2,以此类推
所有的切片操作都会返回新的列表,包含求得的元素
内置函数 len() 同样适用于列表
内置函数 len() 同样适用于列表
>>> q = [2, 3]
>>> p = [1, q, 4]
>>> len(p)
3
>>> p[1]
[2, 3]
>>> p[1][0]
2
a, b = b, a+b
# 变量赋值前,右边首先完成计算。右边的表达式从左到右计算
# print(b, end=',') #禁止换行
字符串列表
names = ["ZhangYang","WuYun","XiangPeng","Xuliangcheng"]
names.append("Leihaidong") #末尾加入
names.insert(1,"Chenronghua") #插入任意位置
names.insert(3,"Xinzhiyu")
names[2] = "Xiedi" #修改
print(names)
#delete 删除
del names[0] #删除需要知道元素在列表中的位置
#names.remove("Chenronghua") #根据值删除元素,知道元素但是不知道元素所在的位置,只删除第一个指定的值
#del names[1] = names.pop(1) pop()里面可加入index进行删除
#方法pop()可删除列表末尾元素,并让你能够直接使用它
names = ["ZhangYang","WuYun","XiangPeng","Xuliangcheng"]
name = names.pop()
print(names)
print(name)
#print(names[0],names[2])
#print(names[1:3]) #切片 顾首不顾尾
print(name[:3]) #自动从列表的开头进行
print(name[2:]) #从2开始直到结束
#print(names[-1]) #最后一个-1 两个-2 负数索引返回列表末尾相应距离元素
#print(names[-3:-1]) #切片从左往右数
#print(names[-2:]) #前面0 后面-1 可省略
print(names[names.index("Xiedi")]) #查找下标
#print(names.count("Xiedi")) #有多少个相似的
#names.clear() #清空自己
names.reverse() #反转 永久性修改了列表元素的排列顺序
names.sort() #排序 按字母表顺序永久性修改了列表元素的排列顺序
names = ["ZhangYang","WuYun","XiangPeng","Xuliangcheng"]
names.sort(reverse=True) #与字母表相反的顺序
name = sorted(names,reverse=True)
print(names)
# list. index(x)返回链表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
len(names) #确定列表的长度
sorted(names) #对列表进行临时排序,不改变列表实际的顺序
names2 = [1,2,3,4,5,6]
names.extend(names2) #加入另一个列表
print(names)
names = ["ZhangYang","WuYun","XiangPeng","Xiedi",["alex","jack"],"Xuliangcheng"]
names.append("Leihaidong") #加入
name2 = names.copy()
print(names)
print(name2)
names[0] = "张扬"
names[4][0] = "ALEXEHD"
print(names[4][0])
print(names)
print(name2)
#列表循环 for语句遍历整个列表 从names中取出一个名字放到i中 i任意名称
#for循环想要包含多少代码修行,每个缩进代码都是循环的一部分,且将对列表中的每个值执行一次
#冒号表示写一行是循环行
for i in names:
print(i)
#跳着切
print(names[0:-1:2])
print(names[::2])
数字列表
#使用函数range()可轻松生成一系列的数字 顾前不顾后
for i in range(0,5):
print(i)
# 0 1 2 3 4
#使用函数list()将range()创建的结果直接转换为列表
a = range(5)
b = list(range(5))
print(type(a))
print(type(b))
print(b)
#<class 'range'>
#<class 'list'>
#[0, 1, 2, 3, 4]
#指定步长 从2开始,不断增加2,直到达到或最终超过11
a = list(range(2,11,2))
#求最小 最大 求和
min(a)
max(a)
sum(a)
列表解析
列表解析将for循环和创建新元素的代码合成一行,并自动添加新元素
squares = [value**2 for value in range(1,5)]
print(squares)
复制列表
squares = [value**2 for value in range(1,5)]
s1 = squares #两个变量都指向同一个列表
s2 = squares[:] #深copy 完全独立的两个部分
import copy
names = ["ZhangYang","WuYun","XiangPeng","Xiedi",["alex","jack"],"Xuliangcheng"]
names.append("Leihaidong") #加入
#name2 = names.copy() #浅copy
#name2 = names
name2 = copy.deepcopy(names)
print(names)
print(name2)
names[0] = "张扬"
names[4][0] = "ALEXEHD"
print(names[4][0])
print(names)
# 嵌套的列表推导式
matrix = [
[1,2,3],
[4,5,6],
[7,8,9],
]
[[row[i] for row in matrix] for i in range(4)] #行列交换
list(zip(*matrix))
元组
字符串非常适合存储在程序运行期间可能变化的数据集,不可改变的列表称为元组
元组定义使用圆括号,可用索引来访问元素
虽然不能修改元组的元素,但是可以给存储元组的变量赋值
dimensions = (500,100)
for i in dimensions:
print(i)
dimensions = (200,300)
for i in dimensions:
print(i)
字典
字典时一系列键值对,每个键都与一个值对应,用{}花括号中的一系列键值对表示,键和值之间用冒号,键值对之间用逗号分隔
#key-value
info = {
"stu1101":"TenLan Wu",
"stu1102":"LongZe Luoza",
"stu1103":"XiaoZe Msa",
}
info["stu1101"] = "阿打算" #修改或添加键值对
#print(info["stu1101"]) #访问字典中的值
print(info)
#del
#del info["stu1101"] #删除
info.pop("stu1101")
print(info)
print(info.get("stu1103")) #获得一个数据
print("stu1101" in info) #判断一个是不是在
for i in info:
print(i,info[i]) #比下面高效很多
for k,v in info.items(): #键存在k,值存在v中
print(k,v)
#遍历字典中的键
for k in info.keys(): #=for k in info
#遍历字典中的值
for v in info.values(): #为剔除重复可使用集合set
上述几种可以互相嵌套
字典列表,在字典中存储列表,在字典中存储字典
#购物小程序
product_list = [
("Iphone",5800),
("Mac Pro",9800),
("Bike",800),
("watch",10600),
("Coffee",31),
("Allex",120)
]
shopping_list = []
#print(product_list[1])
salary = input("Input your salary:")
if salary.isdigit():
salary = float(salary)
while True:
for index,item in enumerate(product_list):
#print(product_list.index(item),item) #寻找下标
print(index,item)
user_choice = input("选择要买嘛? ")
if user_choice.isdigit():
user_choice = int(user_choice)
if user_choice<len(product_list) and user_choice>=0:
p_item = product_list[user_choice]
if p_item[1]<=salary:
shopping_list.append(p_item)
salary-=p_item[1]
print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m"%(p_item,salary))
else:
print("\033[41;1m你的余额只剩[%s]啦,还买个毛线\033[0m"%salary)
exit()
else:
print("商品不存在!!")
exit()
elif user_choice =="q":
print("---------shopping list-----------")
for p in shopping_list:
print(p)
print("Your current balance is %s"%salary)
exit()
else:
print("Invalid option!")
exit()
集合
l1 = [1,4,5,6,2,3,1,4,5]
l1 = set(l1)
l2 = set([1,2,5,1,2,3,19])
l3 = set([1,2,3,4,5,6,7,8,9,10])
print(l1,l2,l3)
#交集
print(l1.intersection(l2))
#并集
print(l1.union(l2))
#差集 1里有2里没有的
print(l1.difference(l2))
#子集
print(l1.issubset(l3))
print(l3.issuperset(l1))
#对称差集
print(l1.symmetric_difference(l2))