【二维元组】
x = (1,3.14, 'hello'), ('data', 666) #这里就没有加外边的小括号 print(x) # ( (1,3.14, 'hello'), ('data', 666)) 但是输出的时候是有括号的元组本身是不可以更改的,但是如果里面有可更改的内容,那么可以对那部分进行更改。 【添加元素】
a=('1','2','3','4') a=a[:2]+('hello',)+a[2:] print(a) #注意hello后面有个逗号 ------------------------------- ('1', '2', 'hello', '3', '4')【部分更改】
a=('1','2',[1,2,3]) a[2][0]=666 #更改[1,2,3]的第一个元素 print(a) del(a[2][0])#删除[666,2,3]的第一个元素 print(a) ------------------------------ ('1', '2', [666, 2, 3]) ('1', '2', [2, 3])(1)等号操作符:== 只有成员位置都相同时才返回True。
(2)连接操作符 + 把两个元组拼接起来。
(3) 重复操作符 * 复制一个元组几份。
(4)成员关系操作符 in、not in 判断元组中是否含有某个元素。
t1 = (123, 456) t2 = (456, 123) t3 = (123, 456) print(t1 == t2) # False print(t1 == t3) # True t4 = t1 + t2 #两个元组拼接 print(t4) # (123, 456, 456, 123) t5 = t3 * 3 #复制了3份 print(t5) # (123, 456, 123, 456, 123, 456) t3 *= 3 #自己复制自己 print(t3) # (123, 456, 123, 456, 123, 456) print(123 in t3) # True print(456 not in t3) # False元组大小和内容都不可更改,因此只有 count 和 index 两种方法。
t = (1, 10.31, 'python') print(t.count('python')) # 1 print(t.index(10.31)) # 1 count('python') 是记录在元组 t 中该元素出现几次,显然是 1 次index(10.31) 是找到该元素在元组 t 的索引,显然是 1解压(unpack)一维元组(有几个元素左边括号定义几个变量),二维元组同理。
t = (1, 10.31, 'python') (a, b, c) = t print(a, b, c) # 1 10.31 python如果你只想要元组其中几个元素,用通配符「*」把多个元素丢给 rest 变量。
t = 1, 2, 3, 4, 5 a, b, *rest, c = t print(a, b, c) # 1 2 5 print(rest) # [3, 4]如果不需要rest变量,就用通配符「*」加上下划线「_」。
t = 1, 2, 3, 4, 5 a, b, *_ = t print(a, b) # 1 2(1)元组概念 写出下面代码的执行结果和最终结果的类型,并分析为什么会出现这样的结果。
(1, 2)*2 (1, )*2 (1)*2回答:
a=(1,2)*2 b=(1,)*2 c=(1)*2 print(a) #(1, 2, 1, 2) print(b) #(1, 1) print(c) #2 print(type(a)) #<class 'tuple'> print(type(b)) #<class 'tuple'> print(type(c)) #<class 'int'>元组c中只有一个元素,后面没有添加逗号,括号被当成运算符使用了。 (2)拆包过程是什么? 答:拆包的过程是把元组里的元素取出来,并在元组的外部创建它,这样能够方便地提供给元组外使用。
a, b = 1, 2上述过程属于拆包吗? 答:我认为不属于,因为1,2需要赋值给某一个变量才是一个元组。
Python 的常用转义字符
转义字符描述\\反斜杠符号\'单引号\"双引号\n换行\t横向制表符(TAB)转义字符可以让字符串更加丰富它的内容。 (1)如果字符串中需要出现单引号或双引号,可以使用转义符号\对字符串中的符号进行转义。
print('let\'s go') # let's go print("let's go") # let's go print('C:\\now') # C:\now print("C:\\Program Files\\Intel\\Wifi\\Help") # C:\Program Files\Intel\Wifi\Help(2)原始字符串只需要在字符串前边加一个英文字母 r 即可。
print(r'C:\Program Files\Intel\Wifi\Help') # C:\Program Files\Intel\Wifi\Help(3)三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
para_str = """这是一个多行字符串的实例 多行字符串可以使用制表符 TAB ( \t )。 也可以使用换行符 [ \n ]。 """ print(para_str) # 这是一个多行字符串的实例 # 多行字符串可以使用制表符 # TAB ( )。 # 也可以使用换行符 [ # ]。 para_str = '''这是一个多行字符串的实例 多行字符串可以使用制表符 TAB ( \t )。 也可以使用换行符 [ \n ]。 ''' print(para_str) # 这是一个多行字符串的实例 # 多行字符串可以使用制表符 # TAB ( )。 # 也可以使用换行符 [ # ]。capitalize() 将字符串的第一个字符转换为大写。 lower() 转换字符串中所有大写字符为小写。 upper() 转换字符串中的小写字母为大写。 swapcase() 将字符串中大写转换为小写,小写转换为大写。 count(str, beg= 0,end=len(string)) 返回str在 string 里面出现的次数,如果beg或者end指定则返回指定范围内str出现的次数。 count(str, beg= 0,end=len(string)) 返回str在 string 里面出现的次数,如果beg或者end指定则返回指定范围内str出现的次数。
str2 = "DAXIExiaoxie" print(str2.count('xi')) # 2 endswith(suffix, beg=0, end=len(string)) 检查字符串是否以指定子字符串 suffix 结束,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。startswith(substr, beg=0,end=len(string)) 检查字符串是否以指定子字符串 substr 开头,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。 str2 = "DAXIExiaoxie" print(str2.endswith('ie')) # True print(str2.endswith('xi')) # False print(str2.startswith('Da')) # False print(str2.startswith('DA')) # True find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。rfind(str, beg=0,end=len(string)) 类似于 find() 函数,不过是从右边开始查找。 str2 = "DAXIExiaoxie" print(str2.find('xi')) # 5 print(str2.find('ix')) # -1 print(str2.rfind('xi')) # 9Tips:不管是find还是rfind,索引都是从左开始查的。
isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。 str3 = '12345' print(str3.isnumeric()) # True str3 += 'a' print(str3.isnumeric()) # False ljust(width[, fillchar])返回一个原字符串左对齐,并使用fillchar(默认空格)填充至长度width的新字符串。rjust(width[, fillchar])返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度width的新字符串。1、字符串函数回顾
(1)怎么批量替换字符串中的元素?
str="abcdefg" str=str.replace('abc','123') print(str) #123defg这样有个缺点就是只能替换连续的字符
(2) 怎么把字符串按照空格进⾏拆分? split(str="", num) 不带参数就是默认以空格为分隔符切片字符串。
(3)怎么去除字符串⾸位的空格?
lstrip([chars]) 截掉字符串左边的空格或指定字符。
2、实现isdigit函数
题目要求
实现函数isdigit, 判断字符串里是否只包含数字0~9
def isdigit(string): """ 判断字符串只包含数字 :param string: :return: """ # your code here pass我的答案:
i=0 s='123a456' for x in s: #遍历整个字符串 obj='0123456789' #建立一个0-9的字符串 if obj.find(x)==-1: #分别判断x是否在obj中,也就是是否在0-9中 i=1 print('字符串包含其他元素') break if i ==0: print('字符串只包含数字')3、leetcode 5题 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例:
输入: “babad”
输出: “bab”
输入: “cbbd”
输出: “bb”
暂时没想出来,等写出来再更新那么如何快速判断一个数据类型 X 是不是可变类型的呢?两种方法:
麻烦方法:用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id,如果不一样,则 X 不可变,如果一样,则 X 可变。便捷方法:用 hash(X),只要不报错,证明 X 可被哈希,即不可变,反过来不可被哈希,即可变。数值、字符和元组 都能被哈希,因此它们是不可变类型;列表、集合、字典不能被哈希,因此它是可变类型。 i = 1 print(id(i)) # 140732167000896 i = i + 2 print(id(i)) # 140732167000960 l = [1, 2] print(id(l)) # 4300825160 l.append('Python') print(id(l)) # 4300825160 整数 i 在加 1 之后的 id 和之前不一样,因此加完之后的这个 i (虽然名字没变),但不是加之前的那个 i 了,因此整数是不可变类型。列表 l 在附加 'Python' 之后的 id 和之前一样,因此列表是可变类型。字典 是无序的 键:值(key:value)对集合,键必须是互不相同的(在同一个字典之内)。
dict 内部存放的顺序和 key 放入的顺序是没有关系的。dict 查找和插入的速度极快,不会随着 key 的增加而增加,但是需要占用大量的内存。字典 定义语法为 {元素1, 元素2, ..., 元素n}
(1)用程序解答下面的题目:
字典的长度是多少 dic = {'Name': 'Zara', 'Age': 7} print("字典长度 : %d" % len(dic)) # 字典长度 : 2 请修改’java’ 这个key对应的value值为98 dic = {'java': '100'} dic['java']='100' 删除 c 这个key dic = {'c': '100'} del dic['c'] 增加一个key-value对,key值为 php, value是90 dic = {'a': '100'} dic.update({'php':'90'}) print(dic) #{'a': '100', 'php': '90'} 获取所有的key值,存储在列表里 dic = {'a': '1','b': '2','c': '3'} lst=[] for x in dic.keys(): lst.append(x) print(lst) #['a', 'b', 'c'] 获取所有的value值,存储在列表里 dic = {'a': '1','b': '2','c': '3'} lst=[] for x in dic.values(): lst.append(x) print(lst) #['1', '2', '3'] 判断 javascript 是否在字典中 a = {'a':{},'b':{},'javascript':{}} if "javascript" in a.keys(): print("在") else: print('不在') 获得字典里所有value 的和 dic = {'a':1,'b':2,'c':3} num=0 for x in dic.values(): x=int(x) num=num+x print(num) #6 获取字典里最大的value dic = {'a':'1','b':'2','c':'3'} n=max(dic,key=dic.get) print(n) #c 获取字典里最小的value dic = {'a':'1','b':'2','c':'3'} n=min(dic,key=dic.get) print(n) #a 字典 dic1 = {‘php’: 97}, 将dic1的数据更新到dic中 dic = {'a':'1','b':'2','c':'3'} dic1={'php':97} dic.update(dic1) print(dic) #{'a': '1', 'b': '2', 'c': '3', 'php': 97}2、字典中的value
有一个字典,保存的是学生各个编程语言的成绩,内容如下
data = { 'python': {'上学期': '90', '下学期': '95'}, 'c++': ['95', '96', '97'], 'java': [{'月考':'90', '期中考试': '94', '期末考试': '98'}] }各门课程的考试成绩存储方式并不相同,有的用字典,有的用列表,但是分数都是字符串类型,请实现函数transfer_score(score_dict),将分数修改成int类型
def transfer_score(data): # your code here先空着,回头在写。。。
这次写的太水了,自我检讨,下次一定要早点准备,不能再这么仓促了o(╥﹏╥)o!内容虽然很水,但是代码都是自己一个字一个字敲出来的,这个不能糊弄。没写完的内容明天接着写。。。