个人笔记,仅作学习记录,如有错误烦请指正
字符串:
str1 = "这是一个字符串" str2 = ‘这也是一个字符串‘
一般字符串都需要用双引号或单引号引起来
在Python中双引号和单引号是一样的,但必须成对出现
msg = "i‘m liming" # 此处因为字符串中包含单引号,所以外边用双引号引起来表示字符串内容 msg = """收到消息"i‘m liming".""" # 此处因为字符串中既包含了单引号,又包含了双引号,所以外边用三引号引起来表示字符串内容
str3 = """这是 一个 包含 换行格式 的字符串 """
Python中的字符串除了用双引号或单引号引起来表示之外
还可以将字符串前后用三个单引号或双引号引起来,这样可以保留多行文本的输出格式
(多行注释其实就是一个没有被任何变量引用的字符串)
格式化输出:
%s: s = string 字符串占位符
%d: d = digit 整形数值占位符
%f: f = float 浮点类型占位符
判断一个字符串是不是数字组成的:
str.isdigit() # 支持普通数字,二进制数字、罗马数字,不支持汉字数字的判断
str.isnumeric()# 支持判断普通数字、罗马数字、汉字数字,但不支持二进制数字判断
数据类型:
整数: int(integer)
在Python3上已不区分整形和长整型,统一为整形
注:Python中存在小整数池-5~257
浮点型:float
大多数情况下用来表示小数,但并不表示浮点型只表示小数
复数:(不讨论)
布尔型:bool
True、False 两种状态
字符串:string
Python中每次创建字符串时需要在内存中开辟一块连续的空间
并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的
加号每出现一次就会在内存中重新开辟一块空间
循环:loop
有限循环:次数限制
无限循环:死循环
for循环的格式:(与常见编译型语言的语法不同)
for i in range(1,10,2): pass
range(x)在Python3中返回的是一个迭代器,Python2中返回的是一个列表
range(x)的参数最多为3个,第1个或2个表示返回的迭代器取值范围,如只有一个参数,表示从0到参数值前一个的迭代器
当有三个参数时,第三个参数表示迭代器的步长
_user = "TyQuan" _passwd = "abc123" # for i in range(3): # username = input("Username:") # password = input("Password:") # if username == _user and password == _passwd: # print("Welcome %s login..." % _user) # break # break 跳出、中断循环 # else: # print("Invalid username or password!") # passed_authentication = False # for i in range(3): # username = input("Username:") # password = input("Password:") # if username == _user and password == _passwd: # print("Welcome %s login..." % _user) # passed_authentication = True # break # else: # print("Invalid username or password!") # # if not passed_authentication: # print("失败多次,账户已被锁定") for i in range(3): username = input("Username:") password = input("Password:") if username == _user and password == _passwd: print("Welcome %s login..." % _user) break else: print("Invalid username or password!") else: # 只要for循环正常执行完毕,中间没有被break打断,就会执行else语句 print("失败多次,账户已被锁定") counter = 0 while counter<3: username = input("Username:") password = input("Password:") if username == _user and password == _passwd: print("Welcome %s login..." % _user) break else: print("Invalid username or password!") counter += 1 else: #只要while循环正常执行完毕,中间没有被break打断,就会执行else语句 print("失败多次,账户已被锁定")
continue:结束本次循环,进行下一次循环
break:跳出当前整个循环
利用标记跳出多层循环的方法:
flag = False for i in range(x): ...... for i in range(x): ...... if xxx: flag = True break if flag: break
2017年9月2日18:35:23
列表:
ist = [0, 1, 2, 3, 4, 5, 6]
切片(截取列表中的元素):
list[x:y:z]
首先z表示步长(正数表示从左往右, 负数表示从右往左), 如果没有第三个参数默认步长为1
此处的x表示起始位置(包含), y表示终止位置(不包含)
当z为正数时
如果x值不写,默认从列表第一个元素开始往后取
如果y值不写,默认取到列表末尾(包含列表最后一个元素)
当z为负数时
如果x值不写,默认从列表最后一个元素开始往前取
如果y值不写,默认取到列表开头(包含列表第一个元素)
切片同样适用于字符串,且方法一致
添加:append(), insert()
list.append(x)# 往末尾追加元素,x为要追加的元素
list.insert(index, x) # 在下标为index的地方插入元素x
修改:
列表的修改可以通过下标直接进行赋值
list[0] = 1
也可以通过切片修改一部分值(不建议, 易产生混淆)
list[0:3] = [11, 22, 33]
此处如果切片的个数大于欲指定值的个数,切片内容多余部分直接丢弃
此处如果切片的个数小于预指定值的个数,预指定值多余部分直接插入
删除:remove(), pop, del
list.remove(x or list[index])# 删除列表中list[index]的值或删除列表中为x的值
list.pop(index)# 删除列表中下标为index所在位置的值,并返回该位置上原有的值
del x# 删除当前程序中存在的变量, 如:del a[0]del a[0:3]del a
查找:index()
list.index(x)# 查找x在该列表中的位置,返回值为该值在列表中的下标,不存在报ValueError错误
list = [1, 2, 3, 2, 4, 2] first_index = list.index(2) second_index = list[first_index+1 : ].index(2) + first_index + 1 third_index = list[second_index+1 : ].index(2) + second_index + 1......# 当列表中包含多个重复元素时,无法通过index得到全部重复元素的位置
list.index(x)只能取到第一个,不过可以通过切片的方式进行逐个获取(不推荐上面的方式, 可以尝试循环来处理)
如:查询次数少
indexs = [] index_temp = 0 list_temp = list temp = 0 # for i in range(len(list)): # if value in list_temp: # index_temp = list_temp.index(value) # indexs.append(index_temp + temp) # temp += index_temp+1 # if temp<len(list): # list_temp = list[temp: ] # else: # break # else: # break for i in range(list.count(value)): index_temp = list_temp.index(value) indexs.append(index_temp + temp) temp += index_temp+1 list_temp = list[temp: ]
或:查询次数多
indexs = [] for i in range(len(list)): if value == list[i]: indexs.append(i)
此处得到的indexs列表,就是包含所有重复元素的位置的列表
身份判断:is
>>> type(list) is list
True
>>>
列表的其他操作:
list.count(x) # 统计某个x元素在列表中出现的次数
list.extend(x) # 可以在列表的末尾一次性追加另一个x序列中的多个值(x为序列,元祖或列表等)
用"+"(加号)也可以实现将一个列表中的多个元素与另一个列表合并, 相当于追加多个元素到末尾
extend与"+"的区别:extend方法修改了被扩展的列表,而原始的连接操作"+"则不然,它返回一个全新的列表
list.reverse() # 将当前列进行倒序排列
list.sort() # 将当前列表进行升序排列(想得到降序的话,list.sort(reverse=True))
对英文字母进行排序是根据ASCII码的顺序排列的,大写字母在前
另外有个排序函数是:sorted(list)
该函数是可以对所有的可迭代序列进行排序的,不是list类的函数
它返回一个新的list,新的list的元素基于小于运算符(__lt__)来排序。
list.clear() # 清空列表