adapt

【python全栈】4. 数据类型介绍
1. 什么是数据类型 2. int数据类型 2.1 int常用方法: a = 4 a.bit_length...
扫描右侧二维码阅读全文
13
2019/04

【python全栈】4. 数据类型介绍

1. 什么是数据类型

常用数据类型:
1、 int类型: 1,2,3等整数,用于计算(python中没有长整型和整型之分,如果数据过长,python会自动给数据扩容变为长整型)
2、 bool类型(布尔类型):True or False 常用于判断,也可以作为if的条件句
3、 str类型(字符串类型):单引号或双引号引起来的内容称为字符串类型,常用于记录少量的数据,大的数据不建议存储于字符串中,为不可变对象。
4、 list类型(列表类型):用中括号列出一系列元素的类型,如[1,2,3],在列表中可以存储任意数据类型的元素(储存量可以很大),是可变对象。
5、 tuple类型(元组类型):以括号列出一系列元素的类型,如(1,2,3),不过元组的特性是给定元素后不可变(不过这里有个特例是元组的元素中如果有可变对象依然可以对其进行改变)。其余和列表基本没有区别,可以看作是不可变的'列表类型',对一些想要保持原样的数据进行处理时就采用元组类型。
6、 dict类型(字典类型):由大括号列出一系列键值对组成的类型,如:{1:'1',2:2,3:'a'},键值对中的键是不可变对象,且在字典内不能重复。键值对是关系型数据。利用key去查找value很快速,因为是使用了哈希查找。故大量关系型数据建议存储在字典里。
7、 set类型(集合类型):由大括号列出了一系列元素组成的类型,如{1,2,'1',3},和字典类型中的键十分相似,集合类型中的元素是不可变的,所以列表是不能放在集合中,集合的元素也是不会重复的。所以对于一些重复数据需要去重就可以利用集合。同时集合可做交、并、差集。

注意: 不可变对象就是可哈希的(如集合、字符串),可变对象就是不可哈希的(如列表)。

2. int数据类型

查询int中所有的方法:
在pycharm中,输入int,使用ctrl+鼠标左键点击'int'。可跳转到int对应的python源码。查看int类型所有的方法

2.1 int常用方法:

1. bit_length()方法

a = 4
a.bit_length() # 返回将该数转换成对应的二进制数所需要的最小的位数

3. bool数据类型

bool类型返回的值就是True或False。同时bool类型可以接受其他数据类型的值并且能够将其转换成对应的bool值,如:

bool(123) # 返回True 除0之外的其他int数值都返回True
bool('1') # 返回True
bool(0) # 返回False
bool('') # 返回False 除空字符外的其他字符都能返回True
bool([]) # 返回False
bool(()) # 返回False
bool({}) # 返回False 只要[]、{}、()等数据类型中有元素,bool数值就是True

同时bool值还能够作为值直接参与计算,如下:

s = True + 1
print(s) # 输出为2,因为True相当于int值1
ss = False + 1
print(ss) # 输出为1,False相当于int值0

4. str类型

4.1 字符串的索引

注意:首位索引为‘0’,这是因为在计算机内对于索引是利用与第一位的差位来表示的,首位与第一个的差值是0,所以索引就为0,如下:

s = 'ABCDefgh'
s1 = s[0] # 这里的s1和s无任何关系,因为str是不可变对象,所以对str做的任何操作都是形成新的字符串
print(s1) #返回'A'
print(s[-1]) #返回'h',-1表示最后一位元素的索引,-2对于倒数第二位元素的索引,后面的依次类推

如何理解:-1表示对最后一位元素的索引?
不管对于str还是list或者是dict、set,最后一个元素的索引都是-1,倒数第二位是-2,依次类推。
这里以列表举例,假设有一个列表s = [1,2,3],上面已经说了索引是对应元素与首位的位数差值。可以把这里列表中的1、2、3看作是一个循环。所以3虽然是最后一个,但它也是1的前一个。所以这里的-1就表示与首位的差位是-1,不就正好是首位的前一个元素吗?又因为是一个循环,则-1表示对最后一位元素的索引,-2、-3等则依次推理

4.2 字符串的切片

1 切片中的数值,若步长大于0时则分号前面的数值必须小于分号后面的数值,切片才会有值。否则会返回空。
2 同理,在切片时,若步长小于0,若为负,则分号前面的数值必须大于分号后面的数值切片后才会有结果。
3 当则分号前面的数值等于分号后面的数值,不管步长为多少,切片后都为空
4 切片时可指定步长,不写时默认为1

s = 'abcdefg'
print(s[0:2]) #返回'ab',因为切片都是左闭右开(其他数据类型的切片也类似)。所以2对于的元素并没有输出出来
print(s[:2]) # 同样返回'ab',分号左边不写的话默认为首位,则为0,同理分号右边若不写则直接切片至最后一位元素的后面(记住是后面)
s[0:6] == s[0:] #返回False,因为s[0:6]是左闭右开并不包含最后一位元素,而s[0:]可看作是对整个字符串s进行切片,切片后还是本身。因为没有指定最后一位元素,切片默认会包含最后一位元素。
s[-3:-1] # 返回ef,同样是左闭右开,所以不包含-1对应的最后一位元素
s[-3:] # 返回efg,与上同理
s[:] # 这是复制整个字符串,结果为 abcdefg
s[::2] # 返回 aceg ,第二个分号后的数值表示步长,默认为1,所以上述的切片步进都是1,这里变为2后输出就会切一个元素跳步进2后再切一位元素
s[4:0:-1] # 左闭右开,返回为edcb,步长为-1则表示倒着取。同时分号前后的数值必须前大后小才会有输出值
s[4::-1] # 这时返回edcba,就把最前面的a也切进来了

# 如何在不知道字符串长度的情况下,将字符串的元素取反输出
s[-1::-1] # 这时就会全部取反输出,虽然不知道最后一位元素的索引,但是-1就表示最后一位元素,步长设为-1,此时就会反着把字符串所有字符输出。
s[::-1] # 这样也是同理的,也会反向输出所有元素
# 还有另一种方法同时还可以使用列表的reverse()方法,先使用list()方法将字符串转换为列表,再用reverse()方将列表反转并用join()方法拼接字符串。

4.3 字符串的拼接

字符串可以利用'+'或者格式化输出对其拼接,可访问本文章详细了解除上面说的两种方法外,还可以利用join()方法对list中的字符串进行拼接

s = ['1','a','v','4','b'] # 这里的元素必须都是字符串
s1 = ''.join(s) 
print(s1) # 输出结果为1av4b,直接将列表中的所有字符串组合在一起了

# 同时还可以利用join()方法在拼接时加入其他字符,如:
s2 = '3'.join(s)
print(s2) # 输出结果为13a3v343b,即在这里元素中都加入了'3'这个字符
最后修改:2019 年 09 月 14 日 02 : 03 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论

2 条评论

  1. shiyue41

    自学的吗??

    1. adapt
      @shiyue41

      对滴,入门python不难哦~