python基础学习(一)
#python中常见的数据类型有
1.1、数字(number)int整数型、float浮点型、complex复数
1.2、布尔(Booleans)True和False
1.3、字符串(Strings)
1.4、列表(list)
1.5、元组(Tuples)
1.6、字典(Dictionaries)
通常我们可以用type()命令来查看一个数字的类型,并且数字的类型可以强制转换。
##1.1数字的计算:下面已a=10,b=20为例进行计算
运算符 | 描述 |
---|---|
+ | (加)两个对象相加a+b输出结果30 |
- | (减)两个对象相减a-b输出结果-10 |
* | (乘)两个数相乘或是返回一个被重复若干次的字符串a*b输出结果200 |
/ | (除)b/a输出结果为2 |
// | (取整)返回商的整数部分 比如7//2输出结果3 |
% | (取余)返回除法的余数b%a输出结果为2 |
** | (幂)返回x的y次幂 a**b为10的20次方 |
##1.2字符串
1.2.1字符串的运算
字符串中使用+相当于拼接两个字符串、使用*n,相当于把字符串重复n次
"梅西" + "C罗"
'梅西C罗'
"梅西"*50
'梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西梅西'
###1.2.2字符串的切片
1有的时候我们不仅仅相取出字符串的其中一个字符,或者相取出其中的一部分,可以怎么做呢?
a = "abcdefgabcd" a[0:3:1]
就可以提取出字符串中的abc
str[start:stop:step]表示的意思是从字符串的start处提取到stop处,每隔step个提取一个。(这里要注意字符串的索引是从0开始的,也就是说字符串a[0]=“a”;a[1]=“b”)
那么如果想要反转字符串怎么做呢?
a[::-1]
这样的话就可以啦。
###1.2.3字符串中常用的几个命令
####split:
str1.split(str=" ",2) 以str为分隔符切片str1
举个例子
str1= "abcdefgabc"
str2 = str1.split("b")
str2
输出结果是[‘a’, ‘cdefga’, ‘c’]
####jion:
str1=["1","2","3","4","5"]
str2 = "*_*".join(str1)
str2
输出结果为’1*234*5’
####replace:
把 str1 中的 str2 替换成 str3,如果 count 指定,则替换不超过 count 次.
str1.replace(str2, str3, str1.count(str2))
a = "abcdabcdabcdabcd"
a.replace('a', '哈哈哈', 1)
a
输出结果是
'哈哈哈bcdabcdabcdabcd'
'abcdabcdabcdabcd'
####count:
返回 str1在start和end之间 在 mystr里面出现的次数
str1.count(str, start=0, end=len(str1))
str1 = 'abcdabcedejjdseksje'
str1.count("a",0,3)
输出结果为1.这个命令的意思是在字符串str1中前3个字母中“a”出现的次数。
####lower 和 upper
lower: str1.lower()转换 str1中所有的大写字母为小写
upper: str2.upper()转换 str2 中所有的小写字母为大写
a = "DghguGARGETG"
b=a.upper()
c=a.lower()
a
b
c
输出结果为
'DghguGARGETG'
'DGHGUGARGETG'
'dghgugargetg'
####strip
删除str1字符串两端的空白字符
c = " I love python "
c.strip()
c.rstrip()
c.lstrip()
输出结果为
'I love python'
' I love python'
'I love python '
####partition
str1.partition(str) :把str1以str分割成三部分,str前,str和str后
a = 'abcdefgabcd'
a.split('e')
a.partition('e')
输出结果为
['abcd', 'fgabcd']
('abcd', 'e', 'fgabcd')
####字符串的格式化
姓名 = '李先生'
节日名称 = '春节快乐'
print('''亲爱的{填写姓名}:
您好, 祝您{填写节日名称}!'''.format(填写姓名=姓名, 填写节日名称=节日名称))
输出结果为
亲爱的李先生:
您好, 祝您春节快乐!
##1.3列表
当我们有一百多个变量要储存起来的时候,定义一百个变量是不现实的,我们可以用列表存放这些变量,以便后续的排序,筛选等的一些操作。
list1= [1,2,3,"a",[1,2,3,[1,1,1]]]
list1
输出结果为
[1, 2, 3, 'a', [1, 2, 3, [1, 1, 1]]]
###1.3.1列表的索引和切片
list是一种有序的集合,可以随时添加和删除其中的元素。列表和字符串一样,是一种可迭代的对象,因此列表和字符串可以一样的索引和切片
list1[起始位置:终止位置:步长] # 包含起始位置,不包含终止位置
list1 = [1, 2, 3,'on','go',True,False,None]
list1[0]
list1[1]
list1[-2]
list1[0:3:2]
输出结果为
1
2
False
[1, 3]
###1.3.2列表的常用方法
1.3.2.1修改元素
通过元素的索引位置来修改元素
list1[0]=2
list1
输出结果为
[2, 2, 3, 'on', 'go', True, False, None]
1.3.2.2添加元素 extend
通过extend可以将另一个集合中的元素逐一添加到列表中
a = [1,2]
b = [3,4]
a.append(b)
a
a.extend(b)
a
输出结果为
[1, 2, [3, 4]]
[1, 2, [3, 4], 3, 4]
1.3.2.3 insert
insert(index, object) 在指定位置index前插入元素object
a = [0, 1, 2]
a.insert(1, 3)
a
输出结果为
[0, 3, 1, 2]
1.3.2.4 删除元素 del pop remove
del:根据下标进行删除 pop:删除最后一个元素 remove:根据元素的值进行删除(如果列表中出现两个一样的元素,那么只会删除第一次出现的)
a=[1,2,3,4,4,5,6,6]
a.pop(1)
a
del a[1]
a
a.remove(4)
a
输出结果为
2
[1, 3, 4, 4, 5, 6, 6]
[1, 4, 4, 5, 6, 6]
[1, 4, 5, 6, 6]
##1.4元组
python 表达式 | 结果及描述 |
---|---|
len((1,2,3)) | 3 计算元素个数 |
(1,2,3)+(1,2,3) | (1,2,3,1,2,3) 连接 |
(”HI“)*4 | (“HI”,“HI”,“HI”,“HI”) 复制 |
3 in (1,2,3) | True 元素是否存在 |
##1.5字典(dict)
Python内置了字典,字典是使用键-值(key-value)存储,具有极快的查找速度。
举个例子,FIFA18球员能力值排名, 我们要根据球员的名字查找对应的成绩,如果用list实现,需要两个list:
names = [‘克里斯蒂亚诺·罗纳尔多’, ‘里奥·梅西’, ‘内马尔’,‘路易斯·苏亚雷斯’, ‘曼努埃尔·诺伊尔’, ‘罗伯特·莱万多夫斯基’, ‘塞尔吉奥·拉莫斯’ ]
scores = [94, 93, 92, 92, 92, 91, 90]
给你一个球员名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的评分,list越长,耗时越长。
比如查找内马尔的分数
names = ['C罗纳尔多', '梅西', '内马尔','苏亚雷斯', '诺伊尔', '莱万多夫斯基', '拉莫斯' ]
scores = [94, 93, 92, 92, 92, 91, 90]
for i in range(len(names)):
if names[i]=="内马尔":
print(scores[i])
###1.5.1创建字典
字典由键(key)和对应值(value)成对组成。基本语法如下:
dict = {‘Alice’: ‘2341’, ‘Beth’: ‘9102’, ‘Cecil’: ‘3258’}
注意: 每个键与值用冒号隔开(:),每对用逗号,每对用逗号分割,整体放在花括号中({})。 键必须独一无二,但值则不必。
值可以取任何数据类型,但必须是不可变的,如字符串,数组或元组。
如果用dict实现,只需要一个“名字”-“评分”的对照表,直接根据名字查找评分,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下
d = {'C罗纳尔多': 94, '梅西': 93, '内马尔': 92, '苏亚雷斯':92,
'诺伊尔':92, '莱万多夫斯基':91, '拉莫斯':90}
d
d['内马尔']
输出结果为
{'C罗纳尔多': 94,
'梅西': 93,
'内马尔': 92,
'苏亚雷斯': 92,
'诺伊尔': 92,
'莱万多夫斯基': 91,
'拉莫斯': 90}
92
###1.5.2字典的赋值与更改
d[‘key’] = value #key 存在即修改,key不存在即新增
d.setdefault(‘key’,value) #只能新增
d['克罗斯'] = 90
d['克罗斯']
d
输出结果为
90
{'C罗纳尔多': 94,
'梅西': 93,
'内马尔': 92,
'苏亚雷斯': 92,
'诺伊尔': 92,
'莱万多夫斯基': 91,
'拉莫斯': 90,
'克罗斯': 90}
注意:一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉
###1.5.3删除字典中的元素
d.pop(‘key’) 必须要传值,因为字典是无序的
d.popitem() 随机删除一个
del d[‘key’]
d.clear() 清空字典
###1.5.4字典常见操作
# 获取字典key
d.keys()
# 获取字典values
d.values()
结果为
dict_keys(['李毅', '拉莫斯', '梅西', '诺伊尔', '莱万多夫斯基', '苏亚雷斯', 'C罗纳尔多', '内马尔'])
dict_values([66, 90, 93, 92, 91, 92, 94, 92])
aaa=d.items()# 输出一个list格式(非真正意义上的list)
aaa
print(list(d.items())) # 把字典的key 和 value 转成一个多维list
结果为
dict_items([('C罗纳尔多', 94), ('梅西', 93), ('内马尔', 92), ('苏亚雷斯', 92), ('诺伊尔', 92), ('莱万多夫斯基', 91), ('拉莫斯', 90)])
[('李毅', 66), ('拉莫斯', 90), ('梅西', 93), ('诺伊尔', 92), ('莱万多夫斯基', 91), ('苏亚雷斯', 92), ('C罗纳尔多', 94), ('内马尔', 92)]
###1.5.5遍历字典
for k,v in dd.items():
print(k,v)
结果为
C罗纳尔多 94
梅西 93
内马尔 92
苏亚雷斯 92
诺伊尔 92
莱万多夫斯基 91
拉莫斯 90
克罗斯 90
###1.5.6将其他数据处理成字典
s = "{'command': 'cmd1', 'option': [{'req': [{'ipt': [{'str1': 'name1'}]}]}], 'OS': 'OS1', 'device': 'D1'}"
s
eval(s)
结果为
"{'command': 'cmd1', 'option': [{'req': [{'ipt': [{'str1': 'name1'}]}]}], 'OS': 'OS1', 'device': 'D1'}"
{'command': 'cmd1',
'option': [{'req': [{'ipt': [{'str1': 'name1'}]}]}],
'OS': 'OS1',
'device': 'D1'}
第一次写,有错误的话请多多指教