python语言中包含的标准数据类型_Python中常见基础数据类型介绍

字符串操作

1. 去除空格删除字符串两边的指定字符,括号的写入指定字符,默认为空格

str = "hello world "

str.strip() # 去除左右两边的空格

str.lstrip() # 去除左边的空格

str.rstrip() # 去除右边的空格

str.strip(’,’) # 去除两边指定的字符

2. 字符串的连接"+" 表示连接两个字符串

注:此方法又称为 "万恶的加号",因为使用加号连接2个字符串会调用静态函数string_concat(),在这个函数中会开辟一块大小是a+b的内存的和的存储单元,然后将a,b字符串拷贝进去。如果是n个字符串相连 那么会开辟n-1次内存,是非常耗费资源的

>>> a = 'hello '

>>> b = 'world'

>>> print( a + b )

hello world

除了上述使用+号运算符之外,也可以使用join()进行连接str.join:连接2个字符串,可指定连接符号

>>> a='hello '

>>> b='####'

>>> a.join(b)

'#hello #hello #hello #'

3. 查找字符串str.index:检测字符串中是否包含子字符串str,可指定范围

a='hello world'

>>> a.index('l')

2

>>> a.index('x')

Traceback (most recent call last):

File "", line 1, in

a.index('x')

ValueError: substring not foundstr.find:检测字符串中是否包含子字符串str,可指定范围

>>> a='hello world'

>>> a.find('l')

2

>>> a.find('x')

-1

注意:两者的区别在于find()查找失败会返回-1,不影响程序的执行,而index如果没有查找到,则会报错

4. 判断是否包含指定字符串用法:in | not in

>>> a='hello world'

>>> 'hello' in a

True

>>> '123' not in a

True

5. 字符串大小写转换

S.lower() #转换为小写

>>> a = 'Hello World'

>>> print(a.lower())

hello world

S.upper() #转换为大写

>>> a = 'Hello World'

>>> print(a.upper())

HELLO WORLD

S.swapcase() #大小写互换

>>> a = 'Hello World'

>>> print(a.swapcase())

hELLO wORLD

S.capitalize() #首字母大写

>>> a = 'Hello World'

>>> print(a.capitalize())

Hello world

6. 字符串长度

str.len

>>> a = 'hello world'

>>> print(len(a))

11

7. 将字符串放入中心位置可指定长度以及位置两边字符

str.center()

>>> a = 'hello world'

>>> print(a.center(40,'*'))

**************hello world***************

8. 字符串统计

>>> a = 'hello world'

>>> print(a.count('l'))

3

9. 字符串的测试、判断函数

S.startswith(prefix[,start[,end]]) #是否以prefix开头

S.endswith(suffix[,start[,end]]) #以suffix结尾

S.isalnum() #是否全是字母和数字,并至少有一个字符

S.isalpha() #是否全是字母,并至少有一个字符

S.isdigit() #是否全是数字,并至少有一个字符

S.isspace() #是否全是空白字符,并至少有一个字符

S.islower() #S中的字母是否全是小写

S.isupper() #S中的字母是否便是大写

S.istitle() #S是否是首字母大写的

10. 字符串的切片

str = '0123456789′

print(str[0:3]) #截取第一位到第三位的字符

print(str[:]) #截取字符串的全部字符

print(str[2]) #截取第三个字符

print(str[-1]) #截取倒数第一个字符

print(str[-3:-1]) #截取倒数第三位与倒数第一位之前的字符

print(str[-3:]) #截取倒数第三位到结尾

11. 字符串的分割

delimiter = ','

mylist = ['Brazil', 'Russia', 'India', 'China']

delimiter.join(mylist)

注意:字符串对象是不可改变的,也就是说在python创建一个字符串后,你不能把这个字符中的某一部分改变。任何上面的函数改变了字符串后,都会返回一个新的字符串,原字串并没有变。

列表列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

1. 定义列表和访问列表中的元素

names = ['Alex',"Tenglan",'Eric']

通过下标访问列表中的元素,下标从0开始计数

>>> names[0]

'Alex'

>>> names[2]

'Eric'

>>> names[-1]

'Eric'

>>> names[-2] #还可以倒着取

'Tenglan'

2. 列表的切片

>>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]

>>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4

['Tenglan', 'Eric', 'Rain']

>>> names[1:-1] #取下标1至-1的值,不包括-1

['Tenglan', 'Eric', 'Rain', 'Tom']

>>> names[0:3]

['Alex', 'Tenglan', 'Eric']

>>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样

['Alex', 'Tenglan', 'Eric']

>>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写

['Rain', 'Tom', 'Amy']

>>> names[3:-1] #这样-1就不会被包含了

['Rain', 'Tom']

>>> names[0::2] #后面的2是代表,每隔一个元素,就取一个

['Alex', 'Eric', 'Tom']

>>> names[::2] #和上句效果一样

['Alex', 'Eric', 'Tom']

3. 列表的增删改查追加

>>> names

['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']

>>> names.append("我是新来的")

>>> names

['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']插入

>>> names

['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

>>> names.insert(2,"强行从Eric前面插入")

>>> names

['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

>>> names.insert(5,"从eric后面插入试试新姿势")

>>> names

['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']修改

>>> names

['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']

>>> names[2] = "该换人了"

>>> names

['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']删除

>>> del names[2]

>>> names

['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']

>>> del names[4]

>>> names

['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

>>>

>>> names.remove("Eric") #删除指定元素

>>> names

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']

>>> names.pop() #删除列表最后一个值

'我是新来的'

>>> names

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']扩展

>>> names

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']

>>> b = [1,2,3]

>>> names.extend(b)

>>> names

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]拷贝

>>> names

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]

>>> name_copy = names.copy()

>>> name_copy

['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]深拷贝和浅拷贝的区别?浅拷贝,在内存中只额外创建第一层数据

import copy

n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}

n3 = copy.copy(n1)

深拷贝,在内存中将所有的数据重新创建一份

import copy

n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}

n4 = copy.deepcopy(n1)

统计

>>> names

['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]

>>> names.count("Amy")

2排序&翻转

>>> names

['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]

>>> names.sort() #排序

Traceback (most recent call last):

File "", line 1, in

TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序了,擦

>>> names[-3] = '1'

>>> names[-2] = '2'

>>> names[-1] = '3'

>>> names

['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']

>>> names.sort()

>>> names

['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']

>>> names.reverse() #反转

>>> names

['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']获取下标

>>> names

['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']

>>> names.index("Amy")

2 #只返回找到的第一个下标

元组元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

names = ("alex","jack","eric")它只有2个方法,一个是count,一个是index,完毕。

程序:购物车程序

需求:启动程序后,让用户输入工资,然后打印商品列表

允许用户根据商品编号购买商品

用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒

可随时退出,退出时,打印已购买商品和余额

字典操作字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。定义

info = {

'stu1101': "TengLan Wu",

'stu1102': "LongZe Luola",

'stu1103': "XiaoZe Maliya",

}特点dict是无序的 key必须是唯一的,so 天生去重增加

>>> info["stu1104"] = "苍井空"

>>> info

{'stu1102': 'LongZe Luola', 'stu1104': '苍井空', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu'}修改

>>> info['stu1101'] = "武藤兰"

>>> info

{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}删除

>>> info

{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}

>>> info.pop("stu1101") #标准删除姿势

'武藤兰'

>>> info

{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}

>>> del info['stu1103'] #换个姿势删除

>>> info

{'stu1102': 'LongZe Luola'}

>>>

>>>

>>>

>>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}

>>> info

{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} #随机删除

>>> info.popitem()

('stu1102', 'LongZe Luola')

>>> info

{'stu1103': 'XiaoZe Maliya'}查找

>>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}

>>>

>>> "stu1102" in info #标准用法

True

>>> info.get("stu1102") #获取

'LongZe Luola'

>>> info["stu1102"] #同上,但是看下面

'LongZe Luola'

>>> info["stu1105"] #如果一个key不存在,就报错,get不会,不存在只返回None

Traceback (most recent call last):

File "", line 1, in

KeyError: 'stu1105'多级字典嵌套及操作

av_catalog = {

"欧美":{

"www.youporn.com": ["很多免费的,世界最大的","质量一般"],

"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],

"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],

"x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]

},

"日韩":{

"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]

},

"大陆":{

"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]

}

}

av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"

print(av_catalog["大陆"]["1024"])

#ouput

['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']其他姿势

#values

>>> info.values()

dict_values(['LongZe Luola', 'XiaoZe Maliya'])

#keys

>>> info.keys()

dict_keys(['stu1102', 'stu1103'])

#setdefault

>>> info.setdefault("stu1106","Alex")

'Alex'

>>> info

{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

>>> info.setdefault("stu1102","龙泽萝拉")

'LongZe Luola'

>>> info

{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

#update

>>> info

{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

>>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}

>>> info.update(b)

>>> info

{'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

#items

info.items()

dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')])

#通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个

>>> dict.fromkeys([1,2,3],'testd')

{1: 'testd', 2: 'testd', 3: 'testd'}循环列表

#方法1

for key in info:

print(key,info[key])

#方法2

for k,v in info.items(): #会先把dict转成list,数据里大时莫用

print(k,v)

#方法3

li = [11,22,33]

for k,v in enumerate(li, 1):

print(k,v)

程序练习

程序: 三级菜单

要求: 1. 打印省、市、县三级菜单 2. 可返回上一级 3. 可随时退出程序

集合操作集合是一个无序的,不重复的数据组合,它的主要作用如下:

去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集、差集、并集等关系

常见操作:

s = set([3,5,9,10]) #创建一个数值集合

t = set("Hello") #创建一个唯一字符的集合

a = t | s # t 和 s的并集

b = t & s # t 和 s的交集

c = t – s # 求差集(项在t中,但不在s中)

d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)

基本操作:

t.add('x') # 添加一项

s.update([10,37,42]) # 在s中添加多项

使用remove()可以删除一项:

t.remove('H')

len(s)

set 的长度

x in s

测试 x 是否是 s 的成员

x not in s

测试 x 是否不是 s 的成员

s.issubset(t)

s <= t

测试是否 s 中的每一个元素都在 t 中

s.issuperset(t)

s >= t

测试是否 t 中的每一个元素都在 s 中

s.union(t)

s | t

返回一个新的 set 包含 s 和 t 中的每一个元素

s.intersection(t)

s & t

返回一个新的 set 包含 s 和 t 中的公共元素

s.difference(t)

s - t

返回一个新的 set 包含 s 中有但是 t 中没有的元素

s.symmetric_difference(t)

s ^ t

返回一个新的 set 包含 s 和 t 中不重复的元素

s.copy()

返回 set “s”的一个浅复制

文件的操作

1. 打开文件文件句柄 = open('文件路径', '模式')

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

打开文件的模式有:r ,只读模式【默认】

w, 只写模式【不可读;不存在则创建;存在则清空内容;】

x, 只写模式【不可读;不存在则创建,存在则报错】

a, 追加模式【可读; 不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件 - r+, 读写【可读,可写】 - w+, 写读【可读,可写】 - x+ ,写读【可读,可写】 - a+, 写读【可读,可写】

"b"表示以字节的方式操作 - rb 或 r+b - wb 或 w+b - xb 或 w+b - ab 或 a+b

注意:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

2. 对文件的操作

class TextIOWrapper(_TextIOBase):

def close(self, *args, **kwargs): # real signature unknown

关闭文件

pass

def fileno(self, *args, **kwargs): # real signature unknown

文件描述符

pass

def flush(self, *args, **kwargs): # real signature unknown

刷新文件内部缓冲区

pass

def isatty(self, *args, **kwargs): # real signature unknown

判断文件是否是同意tty设备

pass

def read(self, *args, **kwargs): # real signature unknown

读取指定字节数据

pass

def readable(self, *args, **kwargs): # real signature unknown

是否可读

pass

def readline(self, *args, **kwargs): # real signature unknown

仅读取一行数据

pass

def seek(self, *args, **kwargs): # real signature unknown

指定文件中指针位置

pass

def seekable(self, *args, **kwargs): # real signature unknown

指针是否可操作

pass

def tell(self, *args, **kwargs): # real signature unknown

获取指针位置

pass

def truncate(self, *args, **kwargs): # real signature unknown

截断数据,仅保留指定之前数据

pass

def writable(self, *args, **kwargs): # real signature unknown

是否可写

pass

def write(self, *args, **kwargs): # real signature unknown

写内容

pass

3. 打开文件的另一种姿势

with open('log','r') as f:

...当with代码块执行完毕时,内部会自动关闭并释放文件资源

有啥问题,可以随时交流呀!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值