Python_列表、字典、字符串、集合操作
一、list
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。对于list的操作,我们要学会增删改查。
查
我们可以直接索引查找,也可以通过切片进行查找,切片的原则是左包括右不包括。
L = ['wuchao','jinxin','xiaohu','sanpang','ligang'] print(L[1:]) # 取到最后
print(L[1:-1]) # 取到倒数第二个
print(L[1:-1:2]) # 步长为2,从左到右一次走两个,也就是隔一个取一个,默认步长为1
print(L[3::-2]) # 步长为2,从右往左
count:统计某个元素在列表中出现的次数。
P = ['to', 'be', 'or', 'not', 'to', 'be']
t = P.count('to')
print(t)
index::查找list中某个元素的索引值,配合修改,如果一个列表中有多个同样的值,要取出其中一个,可以使用切片的方式打印出小列表,在进行相加。
a = ['wuchao','jinxin','xiaohu','sanpang','ligang']
print(a.index('jinxin'))
in::查看某元素是否在列表里
b = ['wuchao','jinxin','xiaohu','sanpang','ligang']
print('wj' in b)
增
增加有两种方式,分别是append()和insert(),他们的区别是append()只能是在最后变追加,而insert()可以通过索引,将数据插入到人任意位置。
L = ['wuchao','jinxin','xiaohu','sanpang','ligang'] L.append('xuepeng') # 默认插入到最后一个位置
L.insert(2,'wj') # 将数据插入任意位置
extend:方法可以在列表的末尾一次性追加另一个序列中的多个值。
a = [1,2,3]
b = [4,5,6]
a.extend(b)
print(a)
print(b)
改
其实就是把list中的值取出来,再次进行赋值。
L = ['wuchao','jinxin','xiaohu','sanpang','ligang'] L[1] = 'haidilao' # 普通替换
L[1:3]=['a', 'b'] # 切片修改
reverse:倒叙打印列表,直接对列表进行操作,无返回值。
a = ['wuchao','jinxin','xiaohu','sanpang','ligang']
a.reverse()
print(a)
sort:按照顺序打印,字母的排序是按照ACISS码进行排序。
a = [4,6,8,2,1,5,2]
b = ['wuchao','jinxin','Xiaohu','sanpang','Ligang']
a.sort()
a.sort(reverse=True)
b.sort()
print(a)
print(b)
删
我们删除通常有三种方式,分别是remove()、pop()和del(),其中最需要注意的是pop()删除方法,他既可以按照索引位置删除,同时还可以返回删除的值,之后会经常使用。
L = ['wuchao','jinxin','xiaohu','sanpang','ligang'] L.remove('wuchao') # 删除wuchao
L.removr(L[0]) # 删除0位置
L.pop(0) # 直接删除索引位置
M = L.pop() # pop可以返回删除的值,之后很常用,如果括号内不写,则表示最后一个
del L[0] # del直接删除,删除多个
L.clear() # 清空
二、字典(dictionary)
字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
语法:
dic = {'name':'mu', 'age':24, 'hobby':{'name':'girl', 'age':23}, 'is_handsome':True}
字典特性:
字典是无序的;
key值是唯一的。
对于字典的操作,增删改查是基础的运用,对于字典,还需掌握字典的遍历、字典的嵌套等等。
增
增加有两种方式,一种是直接增加,一种是使用内置方法增加。
dic_1 = {'name':'mu'}
dic_1['age'] = 24
print(dic_1) dic_1.setdefault('hobby', 'girl')
ret = dic_1.setdefault('hobby', 'girl')
print(ret)
print(dic_1)
查
可以单个查看,也可以整体查看,同时可以只提取键或者值进行查看。
dic_2 = {'name': 'mu', 'hobby': 'girl', 'age': 24}
print(dic_2['name']) # 查看dict中所有的键、值和键值对,需要注意的是,这是一个新的数据类型,并不是一个列表,如果需要拿出来使用,需要进行类型转换
print(dic_2.keys())
print(dic_2.values())
print(dic_2.items()) print(type(dic_2.keys()))
print(list(dic_2.keys()))
改
dic_3 = {'name': 'mu', 'hobby': 'girl', 'age': 24} dic_3['age'] = 18
print(dic_3) # update 更新: 如下调用dic_4之后,会将dic_4的能容更新至dic_3,如果有相同的键,则更新值
dic_4 = {'':'', 'name':'wj'}
dic_3.update(dic_4)
print(dic_3)
print(dic_4)
删
通过删除键,来删除整个键值对。
dic_5 = {'name': 'mu', 'hobby': 'girl', 'age': 24} del dic_5['name'] # 删除字典中的某组指定键值对
print(dic_5)
清空整个字典。
dic_5 = {'name': 'mu', 'hobby': 'girl', 'age': 24}
dic_5.clear()
print(dic_5)
删除整个字典。
dic_5 = {'name': 'mu', 'hobby': 'girl', 'age': 24}
del dic_5
print(dic_5)
pop删除,这个删除后是有返回值的
dic_5 = {'name': 'mu', 'hobby': 'girl', 'age': 24}
ret = dic_5.pop('age') # 删除字典中的某组指定键值对,并返回值
print(ret)
print(dic_5)
返回键值对,随机删除一对,因为dict是无序的。
dic_5 = {'name': 'mu', 'hobby': 'girl', 'age': 24}
a = dic_5.popitem()
print(a,dic_5)
其他操作
当值一样时,批量创建建。
dic_6 = dict.fromkeys(['host1', 'host2', 'host3'], 'test')
print(dic_6)
dic_6['host1'] = 'abc'
print(dic_6)
字典排序。
dic_7 = {'c':555, 'b':333, 'a':111}
sorted(dic_7)
sorted((dic_7.values()))
print(sorted(dic_7))
print(sorted((dic_7.values())))
字典的遍历,字典的遍历,for循环循环字典遍历的时候,默认打印键。
dic = {'name':'mu', 'age':''} for i in dic:
print(i) for i in dic.values():
print(i) for i in dic:
print(i,dic[i]) # 推荐用这种,速度快,直接打印 for i in dic.items():
print(i) for i, v in dic.items(): # 数据需要转换,用这种方式,耗内存,并且时间长
print(i, v)
字典的嵌套。
menu = {
'北京':{
'朝阳':{
'国贸':{
'CICC':{},
'HP':{},
'渣打银行':{},
'CCTV':{}
},
'望京':{
'陌陌':{},
'阿里巴巴':{},
'奔驰':{}
},
'三里屯':{
'优衣库':{},
'apple':{},
}
},
'昌平':{
'沙河':{
'老男孩':{},
'阿泰包子':{}
},
'天通苑':{
'链家':{},
'我爱我家':{},
},
'回龙观':{}
},
'海淀':{
'五道口':{
'谷歌':{},
'网易':{},
'Sogo':{},
'快手':{},
},
},
'中关村':{
'优酷':{},
'爱奇艺':{},
'腾讯':{},
'汽车之家':{},
'新东方':{},
}
},
'上海':{
'浦东':{
'陆家嘴':{
'CICC':{},
'高盛':{},
'摩根':{},
},
'外滩':{}
},
'闵行':{},
'静安':{},
},
'山东':{
'济南':{},
'德州':{
'乐陵':{
'丁务镇':{},
'城区':{},
},
'虞城':{},
'平原县':{},
},
'青岛':{},
}
}
三、字符串
# 重复输出操作
print('Hello' * 2) # 字符串切片
print('helloworld'[2:]) # in判断是否在字符串中
print('el' in 'hello')
print(123 in [23, 56, 123]) # 字符串拼接
a = ''
b = ''
c = ''
d1 = a + b + c # 效率低,开辟多内存,不好
print(d1) d2 = '---'.join([a, b ,c]) # 效率高,是通过某个字符串将这三个拼接起来
print(d2) # python内置方法 st = 'hello world'
# 统计元素个数
print(st.count('l')) # 字符串首字母大写
print(st.capitalize()) # 打印50’-‘,字符串居中
print(st.center(50, '-')) # 判断字符串是以某个字符串为开始/结尾的,返回布尔值
print(st.endswith('d'))
print(st.startswith('s')) # 文件处理判断标准 # 添加空格(没用)
st_test1 = 'he\tllo world'
print(st_test1.expandtabs(5)) # 查找到字符串的第一个元素,并将索引值返回
print(st.find('d')) # 格式化赋值
st_test2 = 'hello world {name} is {age}'
print(st_test2.format(name = 'mu', age = ''))
print(st_test2.format_map({'name':'mu', 'age':24})) # 查找索引值,会报错,find返回-1,不报错
print(st.index('d')) # 字符串中是否只包含字母、数字、汉字。
print('abc123'.isalnum()) # 判断是否是十进制。
print(''.isdecimal()) # 判断字符串是否为一个整形
print(st.isdigit())
print(''.isdigit())
print('123456.999'.isnumeric()) # 判断字符串是否为全小写/大写
print(st.islower())
print(st.isupper()) # 判断是否为空格
print(' '.isspace()) # 判断是否标题(每个单词首字母大写)
print('My Title'.istitle()) # 所有大写变为小写/小写变大写/反转大小写
print('My Title'.lower())
print('My Title'.upper())
print('My Title'.swapcase()) #
print('My Title'.ljust(20,'*'))
print('My Title'.rjust(20,'*')) # 去掉左右的空格和换行,字符串内的空格不动
print(' My Title', '\n', ''.strip())
四、set
定义:把不同的元素组合到一起就是set
作用:可变集合,可对集合进行添加删除等,set整体是可哈希的,里边的值是不可哈希的。他本身是不能做字典的键。
特点:元素必须是不同的,如果是相同的,会自动去掉一个,集合对象是一组无序的可哈希的值,是不可变类型,集合成员可以做字典的键。(字典的键也是不可哈希的)
1. set的创建
s_1 = set('linux_unix') # 会进行去重
print(s_1)
将set转换为list:
s_2 = ['mu', 'ee', 'mu']
s_3 = set(s_2)
print(set(s_3), type(s_3))
s_4 = list(s_3)
print(s_4, type(s_4))
不可哈希的值会报错:
li = [[1, 2], 3, 4]
s = set(li)
print(s) li = [{1:''}, 3, 4]
s = set(li)
print(s)
2. 访问set
使用for循环遍历:
s_2 = ['mu', 'ee', 'mu']
s_3 = set(s_2) for i in s_3:
print(i)
3. 更新set
add添加:把后边会当作一个整体,update会将容器中的值分开,但是add会认为添加了一个容器
s_1 = ['mu', 'ee', 'mu']
s_2 = set(s_1) s_2.add('uu')
print(s_2)
update:会把后边的值当作每一个元素进行更新
s_1 = ['mu', 'ee', 'mu']
s_2 = set(s_1)
s_2.update('oppos')
print(s_2) s_1 = ['mu', 'ee', 'mu']
s_2 = set(s_1)
s_2.update(['', 'old'])
print(s_2)
remove: 删除
s_1 = ['mu', 'ee', 'mu']
s_2 = set(s_1)
s_2.remove('mu')
print(s_2)
pop:随机删除
s_1 = ['mu', 'ee', 'mu', 'wj']
s_2 = set(s_1)
s_2.pop()
print(s_2)
clear:清空集合中的值
s_1 = ['mu', 'ee', 'mu']
s_2 = set(s_1)
s_2.clear()
print(s_2)
del:直接删除集合
s_1 = ['mu', 'ee', 'mu']
s_2 = set(s_1)
del s_2
print(s_2)
4. 集合的操作符
in, not in
s_1 = ['mu', 'ee', 'mu']
s_2 = set(s_1)
print('mu' in s_2)
print('mu' not in s_2)
等价于不等价(==, !=)
print(set('abc') == set('abccba'))
父级子集
print(a.issubset(b)) # a完全包含b
print(a.issubset(b)) # a是b的子集,b完全包含a
5. 关系测试:交集、并集、差集、对称差集
a = set([1, 2, 3, 4, 5])
b = set([4, 5, 6, 7, 8]) # intersection: 交集
print(a.intersection(b)) # a, b中都有的值
print(a & b) # union: 并集
print(a.union(b)) # a, b中所有的值
print(a | b) # difference: 差集
print(a.difference(b)) # 在a中但是不在b中
print(a - b) # symmetric_difference: 对称差集
print(a.symmetric_difference(b)) # 对称差集(反向交际),除去a, b中都有的值
print(a ^ b)
Python_列表、字典、字符串、集合操作的更多相关文章
- Python语法速查: 2. 列表、元组、字典、集合操作
返回目录 (1)通用序列操作 “序列”表示索引为非负整数的有序对象集合,列表.元组.字符串都属于序列.区别在于:列表是可变的,而元组和字符串是不可变的.序列的通用操作他们都可以用. 操作或方法 简述 ...
- python之字符串,列表,字典,元组,集合内置方法总结
目录 数字类型的内置方法 整型/浮点型 字符串类型的内置方法 列表的内置方法 字典的内置方法 元组的内置方法 集合类型内置方法 布尔类型 数据类型总结 数字类型的内置方法 整型/浮点型 加 + 减 - ...
- python字典与集合操作
字典操作 字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划.字母来查对应页的详细内容. 语法: info = { 's1': "jack", 's3' ...
- Python 列表、元组、字典及集合操作详解
一.列表 列表是Python中最基本的数据结构,是最常用的Python数据类型,列表的数据项不需要具有相同的类型 列表是一种有序的集合,可以随时添加和删除其中的元素 列表的索引从0开始 1.创建列表 ...
- 转:Python字典与集合操作总结
转自:http://blog.csdn.net/business122/article/details/7537014 一.创建字典 方法①: >>> dict1 = {} > ...
- Python 元组、字典、集合操作总结
元组 a=('a',) a=('a','b') 特点 有序 不可变,不可以修改元组的值,无法为元组增加或者删除元素 元组的创建 a=('a',) a=('a','b') tuple('abcd') 转 ...
- python中用json存储列表字典等文件操作
JSON字符串用json.dumps, json.loads JSON文件名用json.dump, json.load 由于需要在脚本重启后依旧能够记住之前所使用的列表内容, 故采用json存储列表文 ...
- 初识python 字符串 列表 字典相关操作
python基础(一): 运算符: 算术运算: 除了基本的+ - * / 以外,还需要知道 : // 为取整除 返回的市商的整数部分 例如: 9 // 2 ---> 4 , 9.0 // ...
- 【学习笔记】第五章 python3核心技术与实践--字典和集合
[第四章]思考题的答案,仅供参考: []比list()更快,因为调用了list函数有一定的时间,而[]却没有. 前面我们学习了 Python 中的列表和元组,了解了他们的基本操作和性能比较.这节章,我 ...
- Python【第二课】 字符串,列表,字典,集合,文件操作
本篇内容 字符串操作 列表,元组操作 字典操作 集合操作 文件操作 其他 1.字符串操作 1.1 字符串定义 特性:不可修改 字符串是 Python 中最常用的数据类型.我们可以使用引号('或&quo ...
随机推荐
- Subversion Server Edge的搭建与配置
1.Subversion Server Edge的搭建 当在操作系统为64位的配置服务器上部署时只能够选择Collabnet Subversion Edge,它集合了Subversion所需要一切资源 ...
- 017 Letter Combinations of a Phone Number 电话号码的字母组合
给定一个数字字符串,返回数字所有可能表示的字母组合. 输入:数字字符串 "23"输出:["ad", "ae", "af" ...
- Zipkin — 微服务链路跟踪.
一.Zipkin 介绍 Zipkin 是什么? Zipkin的官方介绍:https://zipkin.apache.org/ Zipkin是一款开源的分布式实时数据追踪系统(Distributed ...
- Java排序算法(一)
Java排序算法(一) 排序的基本概念和分类 1.1排序的定义 在<大话数据结构>中,排序定义为,假设含有n个记录的序列为{r1,r2,...,rn},其相应的关键字{k1,k2,..., ...
- java网络访问指定出口ip
java网络访问指定出口ip Table of Contents 1. socket 2. apache httpclient 1 socket 可以在Socket构造函数中指定使用的本地ip,如: ...
- spring mvc 文件下载 get请求解决中文乱码问题
方案简写,自己或有些基础的可以看懂,因为没时间写的那么详细 方案1 spring mvc解决get请求中文乱码问题, 在tamcat中server.xml文件 URIEncoding="UT ...
- GITHUB中GIT BASH基础命令行
PS:转自https://www.cnblogs.com/WangXinPeng/p/8016293.html 1.常用命令行工具: ①cmd ②powershell ③git ba ...
- Eucalyptus简介
1.Eucalyptus是什么? Eucalyptus n.桉树 Eucalyptus is a Linux-based software architecture that implements ...
- Piwik-2.16.1 (OpenLogic CentOS7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: centos7.2 piwik devops log analysis monitoring open-source 服务优惠价: 按服务商许可协议 ...
- PHP 的那些错误总结
问题1: [root@web01 data]# lsof -i :9000 [root@web01 data]# /application/php/sbin/php-fpm /application ...