1. 基本数据类型
python中的基本数据类型有:
number
:数字类型,包括int
(整型)、float
(浮点型)和complex
(复数),用于计算。bool
:布尔类型,取值为True
/False
,用于判断。str
:字符串类型,可以存储字符并进行操作。list
:列表类型,用[]
包含起来,用于存储较多数据并可以进行索引等操作。例如[1,2,‘string’,[1,2,3]]。tuple
:元组类型,用()
包含起来,用法和列表一样,只是其中的值不可修改。例如(1,2,‘string’,(1,2,3))。dict
:字典类型,用{}
包含起来,有键值对,即一个键对应一个值。例如{‘name’:‘hhw’,‘age’:18}。set
:集合类型,用{}
包含起来,但不包含键值对。例如{1,2,3,4}。
值得注意的是,python中的数据类型都是一个类,而定义变量时相当于创建了一个类的对象,且变量的数据类型是自动分配的,因此通过type()函数查看变量的类型时会得到类似<class 'int'>
的结果,类的定义在pycharm中可以通过Ctrl
+右键来查看。
2. 数字类型与布尔类型
数字类型主要用于计算,其运算符在python学习Day1中已经说明。而数据类型作为一个类,自然有其对应的方法。
# int类型可能用到的方法:bit_length() 返回数字转换成二进制时需要的位数
i = 10
print(i.bit_length()) # 4
对bool
类型的补充:
str
类型转换成bool
类型时,若字符串为空,则转换成False
,否则转换成True
。- python2中没有
bool
类型,而是用0和1代表False
和True
。
3. 字符串类型
字符串类型是用'
或"
引起来的部分,跨多行时可以使用三个引号引起来。对于字符串的操作如下:
3.1. 索引和切片
- 字符串可以通过
[]
来对字符串中的元素进行索引,下标从[0]
开始,到[字符串长度-1]
结束,获取字符串长度可以使用len()
函数,其返回操作数的长度,操作数不仅可以是字符串,也可以是列表和元组等。 - 字符串也可以反向索引,最后一位下标为
[-1]
,倒数第二位为[-2]
,以此类推。
s = "ABCDEFGHIJ"
print(s[0]) # A
print(s[-1]) # J
- 字符串的切片可以通过在
[start:end]
中使用来取,取从start
开始到end
结束但不包括下标为[end]
的一段字符串(原字符串什么都不变),即顾头不顾尾。 :
两边不加数字默认从头取到尾,某一边不加数字默认取到该边全部取。- 可以通过在后面加入步长来进行选取,步长为正数时正着跳跃,为负时反着跳跃。
s = "ABCDEFGHIJ"
print(s[0:4]) # ABCD
print(s[0:],s[:]) # ABCDEFGHIJ ABCDEFGHIJ
print(s[0:5:2]) # ACE
print(s[-1::-1], s[::-1]) # JIHGFEDCBA JIHGFEDCBA
print(s[3::-1]) # DCBA
3.2. 字符串的一些常用方法
s = 'tomMYboy'
s1 = s.capitalize() # 首字母大写
print(s1) # Tommyboy
s21 = s.upper() # 全部大写 应用场景:验证码不区分大小写
s22 = s.lower() # 全部小写
print(s21,s22) # TOMMYBOY tommyboy
s3 = s.swapcase() # 大小写翻转
print(s3) # TOMmyBOY
new_s = 'here we are'
s4 = new_s.title() # 每个单词首字母大写(判断单词是用符号或数字隔开)
print(s4) # Here We Are
s5 = s.center(30,'+') # 将字符放在中间,空白部分可以加填充符号
print(s5) # +++++++++++tomMYboy+++++++++++
new_s1 = 'hererqweq\twe\tare'
s6 = new_s1.expandtabs() # 将空格变成TAB,加上前面的字符为4/8/16等位数
print(s6) # hererqweq we are
s71 = s.startswith('to') # 判断字符是否以某一字符段开头
s72 = s.startswith('M',3,5) # 添加start 和 end(从start到end且不包括end的字符串是否以某一字符段为开头)
print(s71,s72) # True True
s81 = s.find('mM') # 寻找元素,返回其索引,找不到返回-1
s82 = s.find('mM', 3,6)
# s83 = s.index('A') 找不到会直接报错
print(s81, s82) # 2 -1
new_s = ' here is my girl '
s9 = new_s.strip() # 将前后的空格删除,可添加参数使其从前后删除''中遇到的字符,遇到没有的就直接停止
# rstrip() 删除右边的 lstrip() 删除左边的
print(s9) # here is my girl
s10 = new_s.count('i') # 计算字符串内有多少个该元素,可切片
print(s10) # 2
# str ----> list
new_s2 = ':tom:jerry:tracy'
s11 = new_s2.split(':') # 将字符串分割,默认以空格分割
print(s11) # ['', 'tom', 'jerry', 'tracy']
# format格式化输出 以下均输出:我叫Tom,今年18岁,爱好打篮球,再说一下我叫Tom
s01 = '我叫{},今年{}岁,爱好{},再说一下我叫{}'.format('Tom',18,'打篮球','Tom')
print(s01)
s02 = '我叫{0},今年{1}岁,爱好{2},再说一下我叫{0}'.format('Tom',18,'打篮球')
print(s02)
s03 = '我叫{name},今年{age}岁,爱好{hobby},再说一下我叫{name}'.format(age = 18,name = 'Tom',hobby = '打篮球')
print(s03)
# 替换
s = '艾弗森安抚归档放大分割艾弗森'
s12 = s.replace('艾弗森','科比') # 默认全部替换,可以设置替换个数
print(s12) # 科比安抚归档放大分割科比
#is系列 isalpha():字符串是否全是字母组成 isdigit():字符串是否全是数字组成
#isalnum():字符串是否全是字母和数字组成
name = 'tom123'
print(name.isalnum()) # True
print(name.isalpha()) # False
print(name.isdigit()) # False
3.3. for循环在字符串中的简单使用
for循环的格式如下,其会把s中的每个值依次赋给i,每次给i赋值后都会执行todo部分。s可以是字符串、列表、元组等。
for i in s:
todo
例子:
s = 'abcd'
for i in s:
print(i) # a b c d
in
关键词的使用例子如下:
s = 'here is af 苍老师'
if '苍老师' in s:
print('有敏感词') # 有敏感词