python数据类型

数据类型

七种

可变类型:列表[ ] 字典{} 集合 {}

不可变:数值 布尔 字符串 元组()

字符串

在计算机中python属于序列结构

假设字符串为"adc123"

索引下标 --从0开始

索引下标最大值 len(“adc123”)-1

列表字符串元组支持索引

切片:所谓的切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。(只顾头不顾尾)

序列名称[开始位置下标:结束位置下标:步长(步阶)]

切片例子:

numstr = '0123456789'

1、从25开始切片,步长为1

print(numstr[2:5:1])
print(numstr[2:5])

2、只有结尾的字符串切片:代表从索引为0开始,截取到索引为5的位置(不包含索引为5的数据)

print(numstr[:5])

3、只有开头的字符串切片:代表从起始位置开始,已知截取到字符串的结尾

print(numstr[1:])

4、获取或拷贝整个字符串

print(numstr[:])

5、调整步阶:类似求偶数

print(numstr[::2])

6、把步阶设置为负整数:类似字符串翻转

print(numstr[::-1])

7、起始位置与结束位置都是负数

print(numstr[-4:-1])

8、结束字符为负数,如截取012345678

print(numstr[:-1])

寻找字符串的某个子串(find&index)

定义一个字符串

str1 = 'hello world hello linux hello python'

查找linux子串是否出现在字符串中

print(str1.find('linux'))     返回的是18,空格也算

在str1中查找不存在的子串

print(str1.find('and'))       返回的是-1

使用input方法输入任意一个文件名称,求点号的索引下标

filename = input('请输入您要上传文件的名称:')  输入123.txt

获取点号的索引下标

index = filename.find('.')              
print(index)                              返回3

求文件名称

print(filename[:index])                   返回123

求文件后缀

print(filename[index:])                    txt

字符串拼接(结合两者都用加号连起来不错)

需要注意的是,这种写法只能拼接字符串常量。

str1 = "Python教程" "http://c.biancheng.net/python/"

**print**(str1)

str2 = "[Java](http://c.biancheng.net/java/)" "Python" "[C++](http://c.biancheng.net/cplus/)" "[PHP](http://c.biancheng.net/php/)"

**print**(str2)

如果需要使用变量,就得借助+运算符来拼接,具体格式为

name = "C++教程"

url = "http://c.biancheng.net/cplus/"

info = name + "的网址是:" + url

**print**(info)

replace 替换

split 切割---------并返回一个列表类型的数据

count 统计出现次数

列表(其他语言叫做数组)

列表可以一次存储多个数据且可以为不同的数据类型

列表在计算机中的底层存储形式,列表和字符串一样,在计算机内存中都占用一段连续的内存地址,我们想访问列表中的每个元素,都可以通过==“索引下标”==的方式进行获取。

增删改查

append 增加指定数据

extend 两个列表合并

insert 指定位置新增数据

names = ['孙悟空', '唐僧', '猪八戒']

在列表的尾部追加一个元素"沙僧"

names.append('沙僧')

打印列表

print(names)
list1 = ['Tom', 'Rose', 'Jack']

使用extend方法追加元素"Jennify"

names.extend("Jennify")

print(names)

建议:使用extend方法两个列表进行合并

list2 = ['Hack', 'Jennify']
list1.extend(list2)

print(list1)
names = ['薛宝钗', '林黛玉']

在薛宝钗和林黛玉之间,插入一个新元素"贾宝玉"

names.insert(1, '贾宝玉')
print(names)

编号函数作用
1del 列表[索引]删除列表中的某个元素
2pop()删除指定下标的数据(默认为最后一个),并返回该数据
3remove()移除列表中某个数据的第一个匹配项。

☆ del删除指定的列表元素

基本语法:

names = ['Tom', 'Rose', 'Jack', 'Jennify']
# 删除Rose
del names[1]
# 打印列表
print(names)

☆ pop()方法

作用:删除指定下标的元素,如果不填写下标,默认删除最后一个。其返回结果:就是删除的这个元素

names = ['貂蝉', '吕布', '董卓']
del_name = names.pop()
# 或
# del_name = names.pop(1)
print(del_name)
print(names)

☆ remove()方法

作用:删除匹配的元素

fruit = ['apple', 'banana', 'pineapple']
fruit.remove('banana')
print(fruit)

编号函数作用
1列表[索引] = 修改后的值修改列表中的某个元素
2reverse()将数据序列进行倒叙排列
3sort()对列表序列进行排序
list1 = ['貂蝉', '大乔', '小乔', '八戒']
# 修改列表中的元素
list1[3] = '周瑜'
print(list1)

list2 = [1, 2, 3, 4, 5, 6]
list2.reverse()
print(list2)

list3 = [10, 50, 20, 30, 1]
list3.sort()  # 升序(从小到大)
# 或
# list3.sort(reverse=True)  # 降序(从大到小)
print(list3)

查操作的相关方法:

编号函数作用
1index()获取指定数据所在位置的下标
2count()统计指定数据在当前列表中出现的次数
3in判断指定数据在某个列表序列,如果在返回True,否则返回False
4not in判断指定数据不在某个列表序列,如果不在返回True,否则返回False

具体应用案例:

# 1、查找某个元素在列表中出现的位置(索引下标)
list1 = ['apple', 'banana', 'pineapple']
print(list1.index('apple'))  # 0
# print(list1.index('peach'))  # 报错

# 2、count()方法:统计元素在列表中出现的次数
list2 = ['刘备', '关羽', '张飞', '关羽', '赵云']
# 统计一下关羽这个元素在列表中出现的次数
print(list2.count('关羽'))

# 3、in方法和not in方法(黑名单系统)
list3 = ['192.168.1.15', '10.1.1.100', '172.35.46.128']
if '10.1.1.100' in list3:
    print('黑名单IP,禁止访问')
else:
    print('正常IP,访问站点信息')

元组

思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?

答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改。

num_list = [10, 20, 30]
num_list[0] = 100

那这种情况下,我们想要存储多个数据且数据不允许更改,应该怎么办呢?

答:使用元组,元组可以存储多个数据且元组内的数据是不能修改的。

元组的定义

元组特点:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。

基本语法:

# 多个数据元组
tuple1 = (10, 20, 30)

# 单个数据元组
tuple2 = (10,)

注意:如果定义的元组只有一个数据,那么这个数据后面也要添加逗号,否则数据类型为唯一的这个数据的数据类型。

tuple2 = (10)
print(type(tuple2))
输出类型为int

元组的相关操作方法

由于元组中的数据不允许直接修改,所以其操作方法大部分为查询方法。

编号函数作用
1元组[索引]根据索引下标查找元素
2index()查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同
3count()统计某个数据在当前元组出现的次数
4len()统计元组中数据的个数

案例1:访问元组中的某个元素

nums = (10, 20, 30)
print(nums[2])

案例2:查找某个元素在元组中出现的位置,存在则返回索引下标,不存在则直接报错

nums = (10, 20, 30)
print(nums.index(20))

案例3:统计某个元素在元组中出现的次数

nums = (10, 20, 30, 50, 30)
print(nums.count(30))

案例4:len()方法主要就是求数据序列的长度,字符串、列表、元组

nums = (10, 20, 30, 50, 30)
print(len(nums))

字典

思考2:在日常生活中,姓名、年龄以及性别同属于一个人的基本特征。但是如果使用列表对其进行存储,则分散为3个元素,这显然不合逻辑。我们有没有办法,将其保存在同一个元素中,姓名、年龄以及性别都作为这个元素的3个属性。

答:使用Python中的字典

定义:

# 有数据字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

# 空字典
dict2 = {}

dict3 = dict()

在Python代码中,字典中的key必须使用引号引起来

字典的增操作(重点)

基本语法:

字典名称[key] = value
注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。

案例:定义一个空字典,然后添加name、age以及address这样的3个key

# 1、定义一个空字典
person = {}
# 2、向字典中添加数据
person['name'] = '刘备'
person['age'] = 40
person['address'] = '蜀中'
# 3、使用print方法打印person字典
print(person)

注意:列表、字典为可变类型

字典的删操作

① del 字典名称[key]:删除指定元素

# 1、定义一个有数据的字典
person = {'name':'王大锤', 'age':28, 'gender':'male', 'address':'北京市海淀区'}
# 2、删除字典中的某个元素(如gender)
del person['gender']
# 3、打印字典
print(person)

② clear()方法:清空字典中的所有key

# 1、定义一个有数据的字典
person = {'name':'王大锤', 'age':28, 'gender':'male', 'address':'北京市海淀区'}
# 2、使用clear()方法清空字典
person.clear()
# 3、打印字典
print(person)

字典的改操作

基本语法:

字典名称[key] = value
注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。

案例:定义一个字典,里面有name、age以及address,修改address这个key的value值

# 1、定义字典
person = {'name':'孙悟空', 'age': 600, 'address':'花果山'}
# 2、修改字典中的数据(address)
person['address'] = '东土大唐'
# 3、打印字典
print(person)

字典的查操作

① 查询方法:使用具体的某个key查询数据,如果未找到,则直接报错。

字典序列[key]

② 字典的相关查询方法

编号函数作用
1keys()以列表返回一个字典所有的键
2values()以列表返回字典中的所有值
3items()以列表返回可遍历的(键, 值) 元组数据
4enumerate()把一个容器类型(如列表)的数据构改造成key:value结构

案例1:提取person字典中的所有key

# 1、定义一个字典
person = {'name':'貂蝉', 'age':18, 'mobile':'13765022249'}
# 2、提取字典中的name、age以及mobile属性
print(person.keys())

案例2:提取person字典中的所有value值

# 1、定义一个字典
person = {'name':'貂蝉', 'age':18, 'mobile':'13765022249'}
# 2、提取字典中的貂蝉、18以及13765022249号码
print(person.values())

案例3:使用items()方法提取数据

# 1、定义一个字典
person = {'name':'貂蝉', 'age':18, 'mobile':'13765022249'}
# 2、调用items方法获取数据,dict_items([('name', '貂蝉'), ('age', 18), ('mobile', '13765022249')])
# print(person.items())
# 3、结合for循环对字典中的数据进行遍历
for key, value in person.items():
    print(f'{key}{value}')

案例4:enumerate(),把一个容器类型(如列表)的数据构造成key:value结构

list1 = [10, 20, 30, 40, 50]
n = 1
for i in list1:
    print(f'第{n}个数:{i}')
    n += 1

print('-' * 40)

for key, value in enumerate(list1):
    print(f'第{key+1}个数:{value}')

集合——天生去重

什么是集合

集合(set)是一个无序的不重复元素序列。

① 天生去重

② 无序

集合的定义

在Python中,我们可以使用一对花括号{}或者set()方法来定义集合,但是如果你定义的集合是一个空集合,则只能使用set()方法。

# 定义一个集合
s1 = {10, 20, 30, 40, 50}
print(s1)
print(type(s1))

# 定义一个集合:集合中存在相同的数据
s2 = {'刘备', '曹操', '孙权', '曹操'}
print(s2)
print(type(s1))

# 定义空集合
s3 = {}
s4 = set()
print(type(s3))	 # <class 'dict'>
print(type(s4))  # <class 'set'>

集合操作的相关方法(增删查)

☆ 集合的增操作

add()方法:向集合中增加一个元素(单一)

students = set()
students.add('李哲')
students.add('刘毅')
print(students)

☆ 集合的删操作

remove()方法:删除集合中的指定数据,如果数据不存在则报错。

# 1、定义一个集合
products = {'萝卜', '白菜', '水蜜桃', '奥利奥', '西红柿', '凤梨'}
# 2、使用remove方法删除白菜这个元素
products.remove('白菜')
print(products)

☆ 集合中的查操作

① in :判断某个元素是否在集合中,如果在,则返回True,否则返回False

② not in :判断某个元素不在集合中,如果不在,则返回True,否则返回False

# 定义一个set集合
s1 = {'刘帅', '英标', '高源'}
# 判断刘帅是否在s1集合中
if '刘帅' in s1:
    print('刘帅在s1集合中')
else:
    print('刘帅没有出现在s1集合中')

③ 集合的遍历操作

for i in 集合:
    print(i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值