基本数据类型及内置方法

基本数据类型及内置方法

一、数字类型int与float

  • int整形的定义

age=10 #本质age = int(10)

  • 其他进制转十进制

    • 二进制:0,1 (如110)

      1 * (2** 2)+1 * (2** 1) + 0 * (2** 0) = 4+2+0 = 6

    • 八进制:0-7 (如123)

      1 * (8** 2) + 2 * (8** 1) + 3 * (8**0) = 64 + 16 + 3 = 83

    • 十六进制:0-9 a-f

      3 * (16 ** 2) + 2 * (16 ** 1) + 1 * (16** 0) = 768 + 32 + 1 = 801

  • 十进制转其他进制
#十进制转二进制:
# print(bin(108))  # 0b 1101100
#十进制转八进制:
# print(oct(83))   # 0o 123
#十进制转十六进制:
# print(hex(1000))  # 0x 3e8
  • float浮点型的定义

    height = 1.73 #本质height=float(1.73)

    字符串转整形需要先转成浮点型


二、字符串str

  • 字符串的定义:单引号/双引号/三引号之间包含的字符就是字符串(三种方式没有任何区别,但是不可以混用)

  • 字符串前面加小写的r,代表转义(如果字符串中有特殊含义的字符,就可以定义为普通字符)

#数据类型转换:str()可以将任意数据类型转换成字符串类型,如:
l1 = [1,2,3,4,5]
print(type(l1))
print(type(str(l1)))
<class 'list'>
<class 'str'>

1.索引取值:(正向取,反向取) 只能取值不能存

s1 = 'hello world'

>>> s1[4]	#表示正向取值,从左往右
'o'
>>> s1[-7]	#表示反向取值,从右往左
'o'

2.索引切片:截取字符串中的一小段字符串(顾头不顾尾)

>>> s1[0:5]	#取出索引为0-4的所有字符
'hello'
>>> s1[5:]	#取出索引从5开始后面所有的字符
' world'
>>> s1[::-1]	#从右往左依次取值
'dlrow olleh'
>>>

3.长度len:获取字符串的长度,也就是字符的个数,空格也算字符

>>> len(s1)
11

4.成员运算:in 和 not in

>>> 'hello' in s1	#判断hello在不在s1中
True
>>> 'world' not in s1	#判断world是否不在s1中
False

5.strip:移除字符串首尾指定的字符,默认移除空格

>>> s2 = '**hello**'
>>> s2.strip('*')	#括号中指定移除的字符,如果不输入,默认移除空格
'hello'

lstrip移除左边的字符

>>> s2 = '***hello***'
>>> s2.lstrip('*')
'hello***'

rstrip 移除右边的字符

>>> s2.rstrip('*')
'***hello'

6.split切分:对字符串进行切分,可以指定切分的分隔符,也可以指定切分次数,返回的是列表

>>> s1.split()		#默认空格作为切分符号
['hello', 'world']
>>> s2 = '192.168.1.111'
>>> s2.split('.')	#指定以.作为切分符号
['192', '168', '1', '111']
>>> s2.split('.',1)	#括号中的1代表切割的次数
['192', '168.1.111']

rsplit:可以从右往左切割

>>> s2.rsplit('.',1) #从右往左切分
['192.168.1', '111']

7.循环:依次取出字符串中的每个字符

s2 = '早上好'
for i in s2:
    print(i)
早
上
好    

8.lower(),upper()

>>> s3 = 'Hello World'
>>> s3.lower()	#将字母都变小写
'hello world'
>>> s3.upper()	#将字母都变大写
'HELLO WORLD'

9.startswith和endswith

>>> s1.startswith('h')	#判断字符串开头是否是以括号里的字符开头
True
>>> s1.endswith('d')	#判断字符串结尾是否是以括号里的字符结尾
True
>>> s1.startswith('d')
False
>>> s1.endswith('h')
False

10.格式化输出之forma

按位置一一对应

>>> name = 'yang'
>>> age = 22
>>> gender = 'male'
>>> print('my name is {},my age is {} and my gender is {}' .format(name, age, gender))
my name is yang,my age is 22 and my gender is male

按索引

>>> print('my name is {0},my age is {1} and my gender is {2}' .format(name, age, gender))
my name is yang,my age is 22 and my gender is male
>>> print('my name is {2},my age is {0} and my gender is {1}' .format(name, age, gender))
my name is male,my age is yang and my gender is 22

按指定参数传值

>>> print('my name is {a},my age is {b} and my gender is {c}' .format(a=name, b=age, c=gender))
my name is yang,my age is 22 and my gender is male
>>> print('my name is {c},my age is {a} and my gender is {b}' .format(a=name, b=age, c=gender))
my name is male,my age is yang and my gender is 22

11.join:将列表中每个元素按照字符串中的分隔符进行拼接

>>> L1 = ['yang','22','male']
>>> '|'.join(L1)
'yang|22|male'
>>> '*'.join(L1)
'yang*22*male'

12.replace:将字符串中元素进行替换,(先旧后新)

>>> l1 = 'my name is yang, my age is 18'
>>> l1.replace('my', 'My')	#语法:.replace('旧','新')
'My name is yang, My age is 18'
>>> l1.replace('my', 'My',1)	#1 代表只把一个my改为 My
'My name is yang, my age is 18'

13.isdigit:判断字符串中的数据,是否是数字组成

>>> l2 = '31415926'
>>> l2.isdigit()
True
>>> l2 = '3.1415926'
>>> l2.isdigit()
False
score = input('请输入您要查询的成绩:')
if score.isdigit():
    score = int(score)
    if score >= 60:
        print('及格')
    else:
        print('不及格')
else:
    print('请输入数字')

三、列表list

  • 列表list的定义:在中括号[ ]内,用逗号分隔开的多个任意数据类型的值
>>> list('hello')	#任意类型转换成list后,会把每个元素放到列表中
['h', 'e', 'l', 'l', 'o']
>>> list((1,2,3))
[1, 2, 3]

1.索引取值:正反都可以取,不仅可以取还可以存

>>> list1 = [1,2,3,4,5]
>>> list1[0]	#正向取索引从0开始
1
>>> list1[-1]	#反向取表示从右往左
5
>>> list1[-1] = 6	#可以按照索引来修改制定位置的值
>>> list1
[1, 2, 3, 4, 6]

2.索引切片:顾头不顾尾

>>> list1[0:3]	#按照索引取出0到3的元素
[1, 2, 3]
>>> list1[0:5:2]	#2代表步长,一次走两个元素
[1, 3, 6]

3.添加append:列表尾部追加元素

>>> list1.append(7)
>>> list1
[1, 2, 3, 4, 6, 7]

4.extend:追加多个元素

>>> list1.extend([8,9,10])
>>> list1
[1, 2, 3, 4, 6, 7, 8, 9, 10]

5.insert:在指定位置插入元素

>>> list1.insert(4,5) 
>>> list1		#5就回来了
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

6.删除

​ del

>>> del list1[-1]	#删除索引为-1的元素
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8, 9]

​ pop():默认删除最后一个值,并且将删除的值返回,括号内也可以用索引来删除指定元素

>>> list1.pop()	
9				#将删除的元素返回
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8]
>>> list1.pop(-1)	#删除索引为-1的元素
8

​ remove() :括号内表示要删除哪个元素,不需要用索引,没有返回值

>>> list1.remove(5) #咱们的5又没有了
>>> list1
[1, 2, 3, 4, 6, 7]

>>> shanchu = list1.remove(4)	#不会返回删除值
>>> print(shanchu)
None

7.reverse():颠倒顺序

>>> list1.reverse()
>>> list1
[7, 6, 3, 2, 1]

8.sort():给列表内所有元素排序

>>> list1
[7, 6, 3, 2, 1]
>>> list1.sort()
>>> list1
[1, 2, 3, 6, 7]		#默认从小到大的顺序

>>> list1.sort(reverse=True)	#reverse指定是否颠倒顺序,默认为False
>>> list1
[7, 6, 3, 2, 1]

9.count:统计当前列表内指定元素的个数

>>> list.count(1)
2

10.index:获取当前指定元素的索引值,还可以指定查找范围

>>> list.index(8)
0
>>> list.index(7)
1

四、元组tuple

  • 用途:存储多个不同类型的值(不能存可变类型)

  • 定义方式:用小括号存储数据,数据之间通过逗号分隔

    t1=('a','b') #t1=tuple(('a','b'))

    >>> t1 = (1,'hello',1.73,2,3)

1.索引取值:按索引取值(正取,反取),只能取,不能存

>>> t1[1]
'hello'

2.索引切片:(顾头不顾尾,步长)

>>> t1[0:5:2]
(1, 1.73, 3)

3.成员运算

>>> 'hello' in t1
True
>>> 'world' in t1
False

4.长度len

>>> len(t1)
5

5.循环

>>> for i in t1:
...     print(i)
...
1
hello
1.73
2
3

6.count

>>> t1.count(1)
1
>>> t1.count('hello')
1

7.index

>>> t1.index(2)
3

五、字典dict

  • 定义方式:通过大括号来存储数据,通过key:value来定义键值对数据,用逗号隔开
>>> info={'name':'yang','age':'22','sex':'male'}
>>> info
{'name': 'yang', 'age': '22', 'sex': 'male'}
  • 类型转换
#第一种:
>>> info=dict([['name','yang'],('age','22')])
>>> info
{'name': 'yang', 'age': '22'}
#第二种:使用fromkeys生成一个新的字典,它会以第一个参数作为key,以第二个参数为值
>>> info.fromkeys(('name','age','sex'),None)
{'name': None, 'age': None, 'sex': None}

1.按照key存取值

>>> info['name']	#使用key取值
'yang'
>>> info['age'] = '18'		#如果字典中有key修改值
>>> info
{'name': 'yang', 'age': '18'}
>>> info['hobby'] = 'sleep'		#如果字典里没有key,新增key:value
>>> info
{'name': 'yang', 'age': '18', 'hobby': 'sleep'}

2.长度

>>> len(info)
3

3.成员运算

>>> 'hobby' in info
True
>>> 'sex' in info
False

4.get:获取指定key的值,若不存在,默认返回None

>>> info.get('age')		#key存在则取值
'18'
>>> res = info.get('a')	#key不存在返回None
>>> print(res)
None
>>> res = info.get('a',666)	#第二个参数可以修改默认返回的值
>>> print(res)
666

keys:

>>> info.keys()		#返回所有key
dict_keys(['name', 'age', 'hobby']

values:

>>> info.values()	#返回所有value
dict_values(['yang', '18', 'sleep'])

items:

>>> info.items()	#返回所有键值对,返回值都是列表套元组,每个键值对都是存在元组
dict_items([('name', 'yang'), ('age', '18'), ('hobby', 'sleep')])

5.pop()删除:指定key进行删除,有返回值,返回的是value

>>> info.pop('hobby')
'sleep'
>>> info
{'name': 'yang', 'age': '18'}

6.popitem():随机弹出一个键值对,有返回值,返回一个元组

>>> info.popitem()
('age', '18')
>>> info
{'name': 'yang'}

7.update:用新字典替换旧字典,有则修改,无则添加

>>> info.update({'name':'chen'})	#有name则修改
>>> info
{'name': 'chen'}
>>> info.update({'age':'18'})		#无age则添加
>>> info
{'name': 'chen', 'age': '18'}

8.fromkeys

>>> info.fromkeys(['name','age'],'oh')
{'name': 'oh', 'age': 'oh'}
#注意:不是同一个字典,而是生成新的一个字典,以第一个参数(列表)为key,第二个为value
>>> info
{'name': 'chen', 'age': '18'}
>>> info2 = info.fromkeys(['name','age'],'oh')
>>> info2
{'name': 'oh', 'age': 'oh'}

9.setdefault():key不存在则新增键值对,存在返回对应的value

>>> info
{'name': 'chen', 'age': '18'}
>>> info.setdefault('hobby','buybuybuy')	#key不存在旧新增
'buybuybuy'									#返回对应value
>>> info
{'name': 'chen', 'age': '18', 'hobby': 'buybuybuy'}
>>> info.setdefault('age','22')		#存在则返回已存在key对应的值
'18'
>>> info							#对字典不做修改
{'name': 'chen', 'age': '18', 'hobby': 'buybuybuy'}

六、集合

  • 用途:集合、列表、元组、字典都可以存放多个值,集合也一样,但是集合主要用于去重、关系运算

  • 定义:用大括号存储,每个元素通过逗号隔开,定义空集合需用 set()来定义

    • 集合中每个元素必须是不可变类型
    • 集合中没有重复的元素(体现了去重功能)
    • 集合内元素无序
  • 关系运算

    1.合集(|):求两个人的所有好友(重复的直留一个)

>>> friends1 = {'zero','sean','tank','egon'}
>>> friends2 = {'jj','elax','sean','egon'}
>>> friends1 | friends2
{'egon', 'zero', 'jj', 'elax', 'sean', 'tank'}

2.交集(&):求两个人的共同好友

>>> friends1 & friends2
{'sean', 'egon'}

3.差集(-)

>>> friends1 - friends2		#求1独有的好友
{'zero', 'tank'}
>>> friends2 - friends1		#求2独有的好友
{'elax', 'jj'}

4.对称差集(^):求两个人的独有好友(就是去掉重复的之后)

>>> friends1 ^ friends2
{'zero', 'jj', 'elax', 'tank'}

5.值是否相等(==)

>>> friends1 == friends2
False

6.父集:一个集合是否包含另外一个集合

>>> {1,2,3} > {1,2}		#包含True
True
>>> {1,2,3} > {1,2,3,4}	#不包含False
False

7.子集

>>> {1,2} < {1,2,3}
True
>>> {1,2,3,4} < {1,2,3}
False
  • 去重
    • 只能针对不可变类型
    • 集合本身是无序的,去重之后无法保留原来的顺序
>>> l1 = ['a','b','c',1,'a','b',2]
>>> j1 = set(l1)
>>> j1
{1, 2, 'a', 'b', 'c'}

针对不可变类型,并且保证顺序

l = [
    {'name': 'lili', 'age': 18, 'sex': 'male'},
    {'name': 'jack', 'age': 73, 'sex': 'male'},
    {'name': 'tom', 'age': 20, 'sex': 'female'},
    {'name': 'lili', 'age': 18, 'sex': 'male'},
    {'name': 'lili', 'age': 18, 'sex': 'male'},
]

new_1 = []
for dic in l:
    if dic not in new_1:
        new_1.append(dic)
print(new_1)
#结果:去除了重复,保证了顺序
[
 	{'name': 'lili', 'age': 18, 'sex': 'male'},
 	{'name': 'jack', 'age': 73, 'sex': 'male'},
 	{'name': 'tom', 'age': 20, 'sex': 'female'}
]

七、数据类型总结

  • 按存值个数区分
    • 只能存一个值:可称为标量/原子类型(数字、字符串)
    • 可以存放多个值:可称为容器类型(列表、元组、字典)
  • 按照访问方式区分
    • 直接访问:只能通过变量名访问整个值(数字)
    • 顺序访问:可以用索引访问指定的值,索引代表顺序,成为序列类型(字符串、列表、元组)
    • key访问:可以通过key访问指定的值(字典)
  • 按可变不可变区分
    • 可变类型:列表、字典
    • 不可变类型:数字、字符串、元组
  • 可变类型:值发生改变时,内存地址不变,证明在改变原值
  • 不可变类型:值发生改变时,内存地址也变,证明没有改变原值,而是产生了新的值
原文地址:https://www.cnblogs.com/YGZICO/p/11807379.html