IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python数据类型 -> 正文阅读

[Python知识库]python数据类型

数据类型

概述

  • 数字,字符串,元祖不可变数据类型(更改其值是在内存里开辟新的空间来存放新值,原内存地址里的值不变)
    • 对于不可变数量类型:先进行修改操作再打印,否则会会返回None
  • 列表,字典,集合可变数据类型(在内存地址不变的基础上可以修改值)
  • 字符串,列表,元祖都属于序列都有索引,可以遍历,可以切片,可以拼接
  • python里括号使用总结
    • 小括号(): 用于定义元组; 方法调用; print打印; 函数,如len()
    • 中括号(): 用于定义列表; 字符串,列表,元组取下标; 字典取key
    • 大括号(): 用于定义字典,集合; format格式化输出用于取代%s这种的占位符也是大括号

字符串str

索引与切片

在这里插入图片描述

  • 索引
a = "abcde"
print(a[0])
print(a[1])
print(a[-1])

#执行结果
a
b
e
  • 切片
a = "abcdefghijk"
print(a[0:2])	#取第1个到第2个字符(不包含第3个)
print(a[1:6])	#取第2个到第6个字符(不包含第7个)
print(a[0:-1])	#-1表示倒数第一个(最后一个),取第1个到倒数第2个字符
print(a[0:])	#取全部
print(a[:])		#取全部
#执行结果
ab
bcdef
abcdefghij
abcdefghijk

按步长取
print(a[1:6:2])		#步长为2
print(a[::-1])		#倒序
print(a[::-2])		#倒序,步长为2
#执行结果
bdf
kjihgfedcba
kigeca

shell

[root@server1 ~]# echo ${str:0:2}
ab		#取第1个到第2个字符(不包含第3个)
[root@server1 ~]# echo ${str:1:6}
bcdefg	#取第2个到第6个字符(不包含第7个)

[root@server1 ~]# echo $str|cut -c1-2
ab		#取第1个到第2个字符
[root@server1 ~]# echo $str|cut -c2-7
bcdefg	#取第2个到第6个字符

[root@server1 ~]# echo $str|awk '{print substr($0,1,2)}'
ab		#从第1个开始取,取2个字符
[root@server1 ~]# echo $str|awk '{print substr($0,2,6)}'
bcdefg	#从第2个开始取,取6个字符

[root@server1 ~]# echo $str|sed -r 's/()(..)(.*)/\2/'
ab
[root@server1 ~]# echo $str|sed -r 's/(.)(......)(.*)/\2/'
bcdefg
  • 循环遍历打印字符串
方法1:
for i in range(5):
    print(a[i])

方法2
for i in a:
    print(i)    

打印字符及其索引
for index, i in enumerate(a):
    print(index, i)
  • shell
#!/bin/bash
str1="abcde"
length=`echo $str1|wc -L`
for i in `seq $length`
do
	echo $str1|cut -c$i
done

常见操作

str1 = "Hello, nice to meet you!"

print(len(str1))			# 调用len()函数来算长度
print(str1.__len__())		# 使用字符串的__len__()方法来算长度

print(str1.capitalize())	# 整个字符串的首字母大写 
print(str1.title())			# 每个单词的首字母大写 
print(str1.upper())			# 全大写 
print(str1.lower())			# 全小写 
print(str1.swapcase())		# 字符串里所有字母大小写互换

print(str1.center(50, '*'))	# 一共50个字符,字符串放中间,不够的两边补*
print(str1.ljust(50, '*'))	# 一共50个字符,不够的字符串右边补*
print(str1.rjust(50, '*'))	# 一共50个字符,不够的字符串左边补*

print(str1.strip())			# 删除字符串左边和右边的空格及换行(常用) 
print(str1.lstrip())		# 删除字符串左边的空格及换行 
print(str1.rstrip())		# 删除字符串右边的空格及换行 

print(str1.endswith('you'))	# 判断字符串是否以you结尾
print(str1.startswith('H'))	# 判断字符串是否以H开始 

print(str1.count('l'))		# 统计字符串里l出现了多少次 

print(str1.find('nice'))	# 找出nice在字符串的第1个下标,否则返回-1 
print(str1.rfind('e'))		# 找出最后一个e在字符串的下标,否则返回-1 
print(str1.index('nice'))	# 与find类似,但找不到会报错
print(str1.rindex('e'))		# 与rfind类似,但找不到会报错

print(isinstance(str1, int))# 判断str1的数据类型是否为int型

print(str1.isalnum())		# 判断字符串是否由字母或数字组成
print(str1.isalpha())		# 判断字符串是否由纯字母组成
print(str1.isdigit())		# 判断字符串是否由纯数字组成
print(str1.islower())		# 判断字符串是否由纯小写字母组成
print(str1.isupper())		# 判断字符串是否由纯大写字母组成
print(str1.isspace())		# 判断字符串是否由纯空格组成

print(str1.replace('l', '*', 2)) # 替换字符串中的l为*,最多替换2个
  • 字符串分割(分割成列表
以空格为分隔符
str1 = "Hello, nice to meet you!"
print(str1.split(' '))
print(str1.split(' ')[1])
#执行结果
['Hello,', 'nice', 'to', 'meet', 'you!']
nice

以:为分隔符
str2 = 'tcpdump:x:72:72::/:/sbin/nologin'
print(str2.split(':'))
#执行结果
['tcpdump', 'x', '72', '72', '', '/', '/sbin/nologin']

以换行符\n为分隔符
str3 = '''hi
girls
!'''
print(str3.splitlines())
print(str3.splitlines()[0:2])
#执行结果
['hi', 'girls', '!']
['hi', 'girls']

列表list

list1 = [1, 2, 'a', 'b', '中文']
print(list1)
print(type(list1))
print(len(list1))
print(list1[0])
print(list1[0:3])
for index, value in enumerate(list1):
    print(index, value)

#执行结果
[1, 2, 'a', 'b', '中文']
<class 'list'>
5
1
[1, 2, 'a']
0 1
1 2
2 a
3 b
4 中文
按照索引增
list1.insert(1, "add")

追加(增加到最后)
list1.append("end")

迭代的增
list1.extend([5, 6, 'c'])

#执行结果
[1, 'add', 2, 'a', 'b', '中文']
[1, 'add', 2, 'a', 'b', '中文', 'end']
[1, 'add', 2, 'a', 'b', '中文', 'end', 5, 6, 'c']
按索引删(有返回值)
list1.pop(1)
print(list1)

按索引删(可切片,无返回值;不加索引,会删除整个列表)
del list1[1:3]
print(list1)

按元素删
list1.remove('c')
print(list1)

清空
list1.clear()
print(list1)

#执行结果
[1, 2, 'a', 'b', '中文', 'end', 5, 6, 'c']
[1, 'b', '中文', 'end', 5, 6, 'c']
[1, 'b', '中文', 'end', 5, 6]
[]
list1 = [1, 2, 'a', 'b', '中文']

反转列表
list1.reverse()
print(list1)

按索引修改
list1[0]='**'
print(list1)

#执行结果
['中文', 'b', 'a', 2, 1]
['**', 'b', 'a', 2, 1]
  • 其他
list1 = [1, 2, 'a', 'b', '中文']

统计元素在列表中出现的次数
print(list1.count('a'))

找出(第一个匹配)元素的索引
print(list1.index('b'))

#执行结果
1
3

元祖tuple

  • 相当于只读列表
tuple1 = ("lisi", "zhangsan", "wanger", "mazi")
print(tuple1)
print(type(tuple1))
print(tuple1[2])

#执行结果
('lisi', 'zhangsan', 'wanger', 'mazi')
<class 'tuple'>
wanger
  • 案例
tuple2 = (["lisi", 1880], ["zhangsan", 2880], ["wanger", 2000], ["mazi", 2400])
print(tuple2[0][0])
print(tuple2[1][0:])

元祖不能修改,但元祖内嵌套的列表可以修改
tuple2[0][0] = "****"
print(tuple2)

#执行结果
lisi
['zhangsan', 2880]
(['****', 1880], ['zhangsan', 2880], ['wanger', 2000], ['mazi', 2400])

字典dict

  • 字典是python中唯?的映射类型,采?键值对(key-value)的形式存储数据。key唯一,value可以相同

  • python 对key进?哈希函数运算,根据计算的结果决定value的存储地址,所以字典是?序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

dict1 = {
    "name": "zhangsan",
    "age": 18,
    "sex": "男",
    "hobby": "play"
}
print(dict1)
print(type(dict1))
print(len(dict1))

通过key查value
print(dict1['age'])

#执行结果
{'name': 'zhangsan', 'age': 18, 'sex': '男', 'hobby': 'play'}
<class 'dict'>
4
18
dict1["id"] = 3180906023
print(dict1)

#执行结果
{'name': 'zhangsan', 'age': 18, 'sex': '男', 'hobby': 'play', 'id': 3180906023}
dict1.pop('id')
print(dict1)

清空
dict1.clear()
print(dict1)

#执行结果
{'name': 'zhangsan', 'age': 18, 'sex': '男', 'hobby': 'play'}
{}
dict1 = {
    "name": "zhangsan",
    "age": 18,
    "sex": "男",
    "hobby": "play"
}

dict1['hobby'] = 'ball'
print(dict1)

#执行结果
{'name': 'zhangsan', 'age': 18, 'sex': '男', 'hobby': 'ball'}
  • 其他
循环遍历键
for i in dict1.keys():
    print(i)
    
循环遍历值
for i in dict1.values():
    print(i)
    
循环遍历键值对
for i in dict1.items():
    print(i)
    
#执行结果
name
age
sex
hobby

zhangsan
18
男
play

('name', 'zhangsan')
('age', 18)
('sex', '男')
('hobby', 'play')
  • 案例
city={
    "北京": {
        "东城": "景点",
        "朝阳": "娱乐",
        "海淀": "大学", 
    },
    "深圳": {
        "罗湖": "老城区",
        "南山": "IT男聚集",
        "福田": "华强北",
    },
    "上海": {
        "黄埔": "xxxx",
        "徐汇": "xxxx",
        "静安": "xxxx",
    },
}
打印北京东城区的说明(也就是打印出"景点")
print(city['北京']['东城'])

修改北京东城区的说明,改为"故宫"
city['北京']['东城'] = '故宫'
print(city['北京']['东城'])

增加北京昌平区及其说明
city['北京']['昌平'] = '说明'
print(city['北京'])

修改北京海淀区的说明,将"大学"改为"清华","北大","北邮"三个学校的列表
city['北京']['海淀'] = ['清华', '北大', '北邮']
print(city['北京']['海淀'])

在大学列表里再加一个"北影"
city['北京']['海淀'].append('北影')
print(city['北京']['海淀'])

循环打印出北京的区名,并在前面显示序号(以1开始)
for index, i in enumerate(city['北京'].keys()):
    print(index, i)
    
循环打印出北京海淀区的大学,并在前面显示序号(以1开始)
for index, i in enumerate(city['北京']['海淀']):
    print(index, i)

集合set

  • 集合是?序的,不重复的数据集合,它??的元素是可哈希的(不可变类型),但是集合本身是不可哈希的。

  • 集合最重要的两点:

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

set1 = {"zhangsan", "lisi", "wanger", "mazi"}
set2 = [1, 2, 2, 3, 3, 3]
print(set1)
print(set(set2))

#执行结果
{'mazi', 'zhangsan', 'lisi', 'wanger'}
{1, 2, 3}
  • 交并补
set1 = {1, 3, 5, 7, 9}
set2 = {2, 3, 5, 8, 10}

交集
print(set1.intersection(set2))

并集
print(set1.union(set2))

补集
print(set1.difference(set2))
print(set2.difference(set1))

#执行结果
{3, 5}
{1, 2, 3, 5, 7, 8, 9, 10}
{1, 9, 7}
{8, 2, 10}
set1 = {"zhangsan", "lisi", "wanger", "mazi"}
set1.add("xiaoming")
print(set1)

#执行结果
{'wanger', 'mazi', 'lisi', 'zhangsan', 'xiaoming'}
set1 = {"zhangsan", "lisi", "wanger", "mazi"}
set1.remove("mazi")

#执行结果
{'lisi', 'zhangsan', 'wanger'}
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 09:51:35  更:2021-11-27 09:52:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:37:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码