正餐来了
之前在 AI 帮手”伴读”下写了几个功用,与其说在学习,更像是在体会 AI 帮手的教导才能。
在上篇的”背包问题“的解题中,发现对 Python 的语法不行熟悉,会反过来影响解题思路。
我认真思考了一下,仍是得体系的学习一下 Python。不过,仅是学习语法等知识点,肯定是不行的,最好有阶段性的功用实践。
正好《Python编程:从入门到实践》中每节的后边都有”着手试一试”的编程操练环节,能够协助试验”学以致用”的效果。
今天这篇主要共享 Python 数据类型及其操作的相关知识点,每节都附有操练题及解答。
接下来让咱们一起进入 Python 的国际。
数据类型
字符串
介绍
字符串便是一系列字符。在Python中,用引号括起的都是字符串,其间的引号能够是单引号,也能够是双引号。
str = "This is a string."
strSec ='This is also a string.'
笔记
在字符串中刺进变量的值
1、Python 3.6 引入的 f 字符串,要在字符串中刺进变量的值,可在前引号前加上字母 f ,再将要刺进的变量放在花括号内:
first_name = "叶"
last_name = "逐一"
full_name = f"{first_name}{last_name}"
print(full_name)
输出成果
叶逐一
2、Python 3.5 或更早的版本,需求运用 format() 办法。上面的 full_name 变量赋值办法变成了下面的代码,输出的成果不变:
full_name = "{}{}".format(first_name, last_name)
删去空白
有时分额定的空白会带来不必要的费事,比如比照两个字符串的是否相一起,额定的空格会得到失利的成果。这个时分需求先将额定的空格删去。
1、删去字符串左右两边的空格
- rstrip():用于移除字符串右侧(尾)指定的字符(默以为空格或换行符)或字符序列。
- lstrip():用于移除字符串左边(头)指定的字符(默以为空格或换行符)或字符序列。
- strip() :用于移除字符串两边(头尾)指定的字符(默以为空格或换行符)或字符序列。
下面有三个字符串变量,别离是包括左边空格、右侧空格,两边空格的字符串。
word_f = 'I '
word_s = ' love'
favorite_language = " python "
full_sentence = f"{word_f}{word_s}{favorite_language}"
print(full_sentence)
衔接三个变量,运转一下成果
I love python
咱们别离运用三个办法去除空格
full_sentence = f"{word_f.rstrip()}{word_s.lstrip()}{favorite_language.strip()}"
再次运转成果
Ilovepython
2、删去字符串悉数空格
除了左右两边空格,有时分或许字符串中间也包括空格,这个时分上面的三种办法就不好使了。
假如想去掉字符串中间的空格,有几种思路:
(1)运用replace将一切空格替换掉。
full_sentence = "I love python "
print(full_sentence.replace(' ', ''))
运转成果
Ilovepython
(2)逐一运用 strip() 去掉两边空格。
full_sentence = "I love python "
full_sentence.strip()
res = ''.join([i.strip(' ') for i in full_sentence])
print(res)
(3)运用 split 依照空格截取字符串得到一个列表,将列表中一切的空格目标去掉,最后列表从头生成字符串。
full_sentence = "I love python "
sentence_split = full_sentence.split(' ')
sentence_List = [i for i in sentence_split if i != '' ]
sentence_str = ''.join(sentence_List)
练一练
一切练一练的标题,咱们能够先自行测验完成。而我自己完成的代码或许跟习题答案也不太相同,仅供参考。
操练2-4:调整姓名的巨细写
标题:
调整姓名的巨细写 用变量表明一个人的姓名,再以小写、大写和首字母大写的办法显现这个人名。
完成:
这个标题仍是很简答的,Python 提供了修改字符串巨细写的办法。
name_s = 'ye yiyi'
print(name_s.lower())
print(name_s.upper())
print(name_s.title())
打印:
ye yiyi
YE YIYI
Ye Yiyi
操练2-5:名言
标题:
找一句你钦佩的名人说的名言,将其姓名和名言打印出来。输出应相似于下面这样(包括引号)。Albert Einstein once said, “A person who never made a mistake never tried anything new.”
完成:
这个标题主要留意表明字符串类型的引号最近的引号类型相一起,导致的语法错误的问题。需求运用不同引号。
print('Einstein once said, "A person who never made a mistake never tried anything new."')
打印:
Einstein once said, "A person who never made a mistake never tried anything new."
整数和浮点数
介绍
Python将一切带小数点的数称为浮点数。
float_1 = 0.1+0.1
print(float_1)
>>> 0.2
python2中分为整数、长整数,python3中统称为整数。
# 十进制
int_1 = 10
print(int_1)
>>> 10
# 八进制
int_o = 0o10
print(int_o)
>>> 8
# 十六进制
int_x = 0x10
print(int_x)
>>> 16
笔记
浮点数小数位数的不确定性
浮点数进行算数运算时,成果出现以下情况:
float_2 = 0.2+0.1
print(float_2)
>>> 0.30000000000000004
后边再介绍怎么处理多余的小数位的办法。
前端也存在这个问题,所以我并不陌生。
恣意两个数运算成果总是浮点数
将恣意两个数相除时,成果总是浮点数,即使这两个数都是整数且能整除
int_1 = 10
int_2 = 5
print(int_1/int_2)
>>> 2.0
无论是哪种运算,只需有操作数是浮点数,Python 默许得到的总是浮点数,即使成果原本为整数也是如此。
int_2 = 5
float_1 = 2.0
print(int_2*float_1)
>>> 10.0
数中的下划线
Python运用了一种称为”长整数”的技能来处理大整数。长整数是一种特殊的数据类型,它能够存储恣意巨细的整数,并且能够进行高效的运算。
遇到大整数时,可运用下划线将其间的数字分组,使其更清晰易读:
int_long = 123_400_500_600
print(int_long)
>>> 123400500600
注:
1、这种表明办法,需求Python 3.6和更高的版本支撑。
2、Python 的大整数运算是十分高效的,能够用于处理密码学、数论、核算机代数和其他需求处理大整数的范畴。
“约定俗成”的全大写常量表明办法
还有一类数据相似变量,但其值在程序的整个生命周期内保持不变,称之为变量。
Python 没有内置的常量类型,但一般”约定俗成”的用全大写来指定某个变量为常量,其值应始终不变:
MAX_CONTANT = 12345
练一练
操练2-8:数字8
编写四个表达式,别离运用加法、减法、乘法和除法运算,但成果都是整数8。
print(4+4)
>>> 8
print(2*4)
>>> 8
print(int(32/4))
>>> 8
print(12-4)
>>> 8
我将标题稍作了变化,改成了”整数8″,关于前面提到的两数相除会得到浮点数,所以这儿用了int办法,确保得到整数。
列表
介绍
列表由一系列按特定次序摆放的元素组成。
word_list = ['i', 'love', 'python']
print(word_list)
>>> ['i', 'love', 'python']
笔记
运用列表中的各个值
运用f字符串依据列表中的值来创立音讯。
word_list = ['i', 'love', 'python']
msg=f"{word_list[0].title()} {word_list[1]} {word_list[2].title()}."
print(msg)
>>> I love Python.
在列表结束增加元素
运用办法 append() 能够将元素’very’、’much’依次增加到列表结束。
word_list = ['i', 'love', 'python']
word_list.append('very')
word_list.append('much')
print(word_list)
>>> ['i', 'love', 'python', 'very', 'much']
在列表中恣意方位刺进元素
运用办法 insert() 可在列表的任何方位增加新元素。
insert() 包括两个入参:index (刺进方位)和 element (刺进元素)。
word_list = ['i', 'love', 'python']
word_list.insert(1,'really')
print(word_list)
>>> ['i', 'really', 'love', 'python']
运用del句子删去恣意方位元素
运用 del 句子,能够删去想要删去的确定方位的元素。
word_list = ['i', 'just', 'love', 'python']
del word_list[1]
print(word_list)
>>> ['i', 'love', 'python']
运用办法 pop() 删去元素
办法 pop() 能够删去列表结束的元素,并让你能够接着运用它。
word_list = ['i', 'love', 'python', 'not relly']
word_pop = word_list.pop()
print(word_list)
>>> ['i', 'love', 'python']
print(word_pop)
>>> not relly
办法 pop() 也能够删去列表中恣意方位的元素,只需在圆括号中指定要删去元素的索引即可。
word_list = ['i', 'just', 'love', 'python']
word_pop = word_list.pop(1)
print(word_list)
>>> ['i', 'love', 'python']
print(word_pop)
>>> just
依据值删去元素
办法 remove() 能够依据要删去的元素的值删去对应元素。
word_list = ['i', 'just', 'love', 'python']
word_list.remove('just')
print(word_list)
>>> ['i', 'love', 'python']
留意,关于不存的值,运用 remove() 进行删去会报错。
word_list.remove('so')
>>> ValueError: list.remove(x): x not in list
运用办法 sort() 对列表永久排序
办法 sort() 能够对列表进行排序,从小到大,且是永久性地修改列表元素的摆放次序。
sort_list = [2, 11, 8, 55, 6, 7, 23, 33, 5, 6]
sort_list.sort()
print(sort_list)
>>> [2, 5, 6, 6, 7, 8, 11, 23, 33, 55]
假如想得到从大到小排序,只需向 sort() 办法传递参数 reverse=True 即可。
sort_list.sort(reverse=True)
>>> [55, 33, 23, 11, 8, 7, 6, 6, 5, 2]
运用函数 sorted() 对列表临时排序
办法 sorted() 能够完成特定次序显现列表元素,即保存列表元素本来的摆放次序,一起以特定的次序呈现它们。
sort_list = [2, 11, 8, 55, 6, 7, 23, 33, 5, 6]
print(sorted(sort_list))
>>> [2, 5, 6, 6, 7, 8, 11, 23, 33, 55]
print(sort_list)
>>> [2, 11, 8, 55, 6, 7, 23, 33, 5, 6]
print(sort_list[1])
>>> 11
办法 sorted() 包括三个参数:
iterable:表明指定的序列;
key:能够自界说排序规则;
reverse:指定以升序(False,默许)仍是降序(True)进行排序。
word_list = ['i', 'love', 'python', 'so', 'much']
print(sorted(word_list, key=lambda x: len(x)))
>>> ['i', 'so', 'love', 'much', 'python']
倒着打印列表
办法 reverse() 能够反转列表元素的摆放次序。
word_list = ['i', 'love', 'python']
word_list.reverse()
print(word_list)
>>> ['python', 'love', 'i']
假如还想康复本来的列表次序,只需求对列表再调用一次 reverse() 。
word_list.reverse()
print(word_list)
>>> ['i', 'love', 'python']
练一练
操练3-4:嘉宾名单
假如你能够约请任何人共进晚餐(无论是故去的仍是在世的),你会约请哪些人?请创立一个列表,其间包括至少三个你想约请的人;然后,运用这个列表打印音讯,约请这些人来与你共进晚餐。
name_list = ['zhang san', 'shang ying yan', 'wang wu', 'ning zai chun', 'ning jie']
print("花径不曾缘客扫,陋屋今始为君开。")
print(f"欢迎,{name_list[1].title()}")
print(f"欢迎,{name_list[3].title()}")
print(f"欢迎,{name_list[4].title()}")
>>> 花径不曾缘客扫,陋屋今始为君开。
>>> 欢迎,Shang Ying Yan
>>> 欢迎,Ning Zai Chun
>>> 欢迎,Ning Jie
操练3-4:增加嘉宾
你刚找到了一个更大的餐桌,可包容更多的嘉宾。向嘉宾名单中间方位和结束别离增加一位嘉宾。
打印一系列音讯,向名单中的每位嘉宾宣布约请。
name_list = ['zhang san', 'shang ying yan', 'wang wu', 'ning zai chun', 'ning jie']
name_list.insert(4,'lily')
name_list.append('chai popo')
print("花径不曾缘客扫,陋屋今始为君开。")
print(f"欢迎,{name_list[1].title()}")
print(f"欢迎,{name_list[3].title()}")
print(f"欢迎,{name_list[4].title()}")
print(f"欢迎,{name_list[5].title()}")
print(f"欢迎,{name_list[6].title()}")
>>> 花径不曾缘客扫,陋屋今始为君开。
>>> 欢迎,Shang Ying Yan
>>> 欢迎,Ning Zai Chun
>>> 欢迎,Lily
>>> 欢迎,Ning Jie
>>> 欢迎,Chai Popo
操作列表
笔记
遍历整个列表
运用 for 循环打印每一个老友的姓名:
name_list = ['lily', 'shang ying yan', 'chai paopao', 'ning zai chun', 'ning jie']
for name in name_list:
print(name)
>>> lily
>>> shang ying yan
>>> chai paopao
>>> ning zai chun
>>> ning jie
留意,位于 for 句子后边且归于循环组成部分的代码行,一定要缩进。不然,会报错:
for name in name_list:
print(name)
>>> IndentationError: expected an indented block
运用 range() 创立数字列表
函数 range() 能够生成一系列数,能够运用 for 循环进行打印。
num_list_2 = range(1, 6)
for num2 in num_list_2:
print(num2)
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5
留意,运用 range() 办法生成的序列,包括开端的数字,可是不包括结束的数字。
也能够经过索引得到对应的元素。
print(num_list_2[0])
>>> 1
还有一种创立数字列表的办法,运用函数 list() 将 range() 的成果直接转换为列表。
num_list = list(range(1, 6))
print(num_list)
>>> [1, 2, 3, 4, 5]
咱们再试一下循环:
num_list = list(range(1, 6))
for num1 in num_list:
print(num1)
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5
range() 和 list() 的差异
比照一下二者的差异:
1、 range() 生成的序列类型很固定有必要是整数,list() 则不需求。
word_list = list('pyhon1')
print(word_list)
>>> ['p', 'y', 'h', 'o', 'n', '1']
2、 range() 函数还有第三个参数-step,能够完成距离数列。
num_list_2 = range(1, 11, 2)
print(list(num_list_2))
>>> [1, 3, 5, 7, 9]
对数字列表执行简略的统计核算
num_list_2 = range(1, 11)
print(max(num_list_2))
>>> 10
print(min(num_list_2))
>>> 1
print(sum(num_list_2))
>>> 55
列表解析
squares = [value**2 for value in range(1, 11)]
print(squares)
>>> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
上面的代码中,首先生成了一个数列,然后循环数列得到每个元素 value,将 value 的值提供给核算平方值的表达式,终究得到一切值平方之后的数列。
练一练
操练4-7:3的倍数
创立一个列表,其间包括3~30能被3整除的数,再运用一个for循环将这个列表中的数打印出来。
num_list = range(3, 31, 3)
for num in num_list:
print(num)
>>> 3
>>> 6
>>> 9
>>> 12
>>> 15
>>> 18
>>> 21
>>> 24
>>> 27
>>> 30
操练4-9:立方解析
运用列表解析生成一个列表,其间包括前10个非0整数的立方。
num_list = [(value ** 3) for value in range(1, 11)]
for num in num_list:
print(num)
>>> 1
>>> 8
>>> 27
>>> 64
>>> 125
>>> 216
>>> 343
>>> 512
>>> 729
>>> 1000
总结
以上,便是我在 Python 学习中,记录的关于数据类型的知识点,一起关于部分操练题的作答。
此外,还增加了一些容易被忽视的功用点和比照,额定查了其他材料,经过一个点联想到相关点,这样一来加深了当时功用的印象。
读完本文的主要收成有:
1、关于字符串,学习了字符串是什么、怎么在字符串中刺进值、怎么剔除字符串中多余的空白;
2、关于整数和浮点数,学习了怎么运用整数和浮点数、一些运用数值数据的办法;
3、关于列表,即学习了列表是什么以及怎么运用其间的元素、怎么界说列表以及怎么增删元素、怎么对列表进行排序,又学习了怎么操作列表元素、怎么遍历整个列、怎么解析列表处理其间的元素。
作者介绍
非工作「传道授业解惑」的开发者叶逐一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
假如看完文章有所收成,欢迎点赞 | 保藏⭐️ | 留言。
若有收成,就点个赞吧