python基础内容整理(一)
基本数据类型
字符串 String
字符串是不可变类型
字符串的分割:
s.split(sep)以给定的sep为分隔符对s进行分割。
In [4]:
s = "hello world"
s.split()
Out[4]:
['hello', 'world']
In [11]:
line = "1,2,3,4,5"
numbers = line.split(',')
连接
与分割相反,s.join(str_sequence)的作用是以s为连接符将字符串序列str_sequence中的元素连接起来,并返回连接后得到的新字符串:
In [13]:
s = ','
s.join(numbers)
Out[13]:
'1,2,3,4,5'
替换
s.replace(part1, part2)将字符串s中指定的部分part1替换成想要的部分part2,并返回新的字符串。 每个部分都会替换 不止是第一个 s的值本身没有发生变化 只是生成一个新的字符串
In [17]:
s = "hello world"
s.replace('l', ' python ')
Out[17]:
'he python python o wor python d'
In [19]:
s
Out[19]:
'hello world'
大小写转换
s.upper()方法返回一个将s中的字母全部大写的新字符串。
s.lower()方法返回一个将s中的字母全部小写的新字符串。
这两种方法也不会改变原来s的值:
In [20]:
"hello world".upper()
Out[20]:
'HELLO WORLD'
数字
取整
In [7]:
round(21.6)
Out[7]:
22
列表
删除元素
Python提供了删除列表中元素的方法 'del'。
删除列表中的第一个元素:
In [22]:
a = [1002, 'a', 'b', 'c']
del a[1]
a
Out[22]:
[1002, 'b', 'c']
In [25]:
a = [1002, 'a', 'b', 'c']
del a[1:]
a
Out[25]:
[1002]
删除间隔的元素
In [24]:
a = ['a', 1, 'b', 2, 'c']
del a[::2]
a
Out[24]:
[1, 2]
列表方法
不改变列表的方法
列表中某个元素个数count
l.count(ob)
返回列表中元素 ob
出现的次数。
a = [11, 12, 13, 12, 11]
a.count(11)
列表中某个元素位置index
l.index(ob)
返回列表中元素 ob
第一次出现的索引位置,如果 ob
不在 l
中会报错。
In [25]:
a.index(12)
Out[25]:
1
不存在的元素会报错:
In [26]:
a.index(1)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-26-ed16592c2786> in <module>()
----> 1 a.index(1)
ValueError: 1 is not in list
改变列表的方法
向列表添加单个元素
l.append(ob)
将元素 ob
添加到列表 l
的最后。
In [27]:
a = [10, 11, 12]
a.append(11)
print a
[10, 11, 12, 11]
append每次只添加一个元素,并不会因为这个元素是序列而将其展开:
In [28]:
a.append([11, 12])
print a
[10, 11, 12, 11, [11, 12]]
向列表添加序列
l.extend(lst)
将序列 lst
的元素依次添加到列表 l
的最后,作用相当于 l += lst
。
In [29]:
a = [10, 11, 12, 11]
a.extend([1, 2])
print a
[10, 11, 12, 11, 1, 2]
插入元素
l.insert(idx, ob)
在索引 idx
处插入 ob
,之后的元素依次后移。
In [30]:
a = [10, 11, 12, 13, 11]
# 在索引 3 插入 'a'
a.insert(3, 'a')
print a
[10, 11, 12, 'a', 13, 11]
移除元素
l.remove(ob)
会将列表中第一个出现的 ob
删除,如果 ob
不在 l
中会报错。
In [31]:
a = [10, 11, 12, 13, 11]
# 移除了第一个 11
a.remove(11)
print a
[10, 12, 13, 11]
弹出元素
l.pop(idx)
会将索引 idx
处的元素删除,并返回这个元素。
In [32]:
a = [10, 11, 12, 13, 11]
a.pop(2)
Out[32]:
12
排序
l.sort()
会将列表中的元素按照一定的规则排序:
In [33]:
a = [10, 1, 11, 13, 11, 2]
a.sort()
print a
[1, 2, 10, 11, 11, 13]
如果不想改变原来列表中的值,可以使用 sorted
函数:
In [34]:
a = [10, 1, 11, 13, 11, 2]
b = sorted(a)
print a
print b
[10, 1, 11, 13, 11, 2]
[1, 2, 10, 11, 11, 13]
list.sort(cmp=None, key=None, reverse=False)
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=takeSecond)
# 输出类别
print '排序列表:', random
输出:排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]
列表反向
l.reverse()
会将列表中的元素从后向前排列。
In [35]:
a = [1, 2, 3, 4, 5, 6]
a.reverse()
print a
[6, 5, 4, 3, 2, 1]
如果不想改变原来列表中的值,可以使用这样的方法:
In [36]:
a = [1, 2, 3, 4, 5, 6]
b = a[::-1]
print a
print b
[1, 2, 3, 4, 5, 6]
[6, 5, 4, 3, 2, 1]
元组
基本操作
与列表相似,元组Tuple
也是个有序序列,但是元组是不可变的,用()
生成。
In [1]:
t = (10, 11, 12, 13, 14)
t
(10, 11, 12, 13, 14)
但是元组是不可变的:
单个元素的元组生成
由于()
在表达式中被应用,只含有单个元素的元组容易和表达式混淆,所以采用下列方式定义只有一个元素的元组:
In [5]:
a = (10,)
print a
print type(a)
(10,)
<type 'tuple'>
In [6]:
a = (10)
print type(a)
<type 'int'>
将列表转换为元组:
In [7]:
a = [10, 11, 12, 13, 14]
tuple(a)
Out[7]:
(10, 11, 12, 13, 14)
元组方法
由于元组是不可变的,所以只能有一些不可变的方法,例如计算元素个数 count
和元素位置 index
,用法与列表一样。
a.count(10)
a.index(12)
字典
空字典
Python 使用 {}
或者 dict()
来创建一个空的字典:
In [1]:
a = {}
type(a)
dict
a = dict()
type(a)
dict
b = {'one': 'this is number 1', 'two': 'this is number 2'}
b['one']
'this is number 1'
字典没有顺序
当我们 print
一个字典时,Python并不一定按照插入键值的先后顺序进行显示,因为字典中的键本身不一定是有序的。
print(a)
{'two': 'this is number 2', 'one': 'this is number 1, too'}
因此,Python中不能用支持用数字索引按顺序查看字典中的值,而且数字本身也有可能成为键值,这样会引起混淆:
键必须是不可变的类型 ,而值可以是任意的Python对象。
使用 dict 初始化字典
除了通常的定义方式,还可以通过 dict()
转化来生成字典:
inventory = dict(
[('foozelator', 123),
('frombicator', 18),
('spatzleblock', 34),
('snitzelhogen', 23)
])
inventory
{'foozelator': 123, 'frombicator': 18, 'snitzelhogen': 23, 'spatzleblock': 34}
利用索引直接更新键值对:
In [15]:
inventory['frombicator'] += 1
inventory
{'foozelator': 123, 'frombicator': 19, 'snitzelhogen': 23, 'spatzleblock': 34}
适合做键的类型
在不可变类型中,整数和字符串是字典中最常用的类型;而浮点数通常不推荐用来做键,原因:浮点数的精度问题
有时候,也可以使用元组作为键值,例如,可以用元组做键来表示从第一个城市飞往第二个城市航班数的多少:
In [19]:
connections = {}
connections[('New York', 'Seattle')] = 100
connections[('Austin', 'New York')] = 200
connections[('New York', 'Austin')] = 400
元组是有序的,因此 ('New York', 'Austin')
和 ('Austin', 'New York')
是两个不同的键:
字典方法
get
方法
用索引可以找到一个键对应的值,但是当字典中没有这个键的时候,Python会报错,这时候可以使用字典的 get
方法来处理这种情况,其用法如下:
`d.get(key, default = None)`
返回字典中键 key
对应的值,如果没有这个键,返回 default
指定的值(默认是 None
)。
In [21]:
a = {}
a["one"] = "this is number 1"
a["two"] = "this is number 2"
a["three"]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-22-8a5f2913f00e> in <module>()
----> 1 a["three"]
KeyError: 'three'
print a.get("three")
None
pop
方法删除元素
pop
方法可以用来弹出字典中某个键对应的值,同时也可以指定默认参数:
d.pop(key, default = None)`
删除并返回字典中键 key
对应的值,如果没有这个键,返回 default
指定的值(默认是 None
)。
与列表一样,del
函数可以用来删除字典中特定的键值对,例如:
In [30]:
del a["one"]
a
update
方法更新字典
之前已经知道,可以通过索引来插入、修改单个键值对,但是如果想对多个键值对进行操作,这种方法就显得比较麻烦,好在有 update
方法:
d.update(newd)
将字典newd
中的内容更新到d
中去。
In [31]:
person = {}
person['first'] = "Jmes"
person['last'] = "Maxwell"
person['born'] = 1831
print person
{'born': 1831, 'last': 'Maxwell', 'first': 'Jmes'}
把'first'改成'James',同时插入'middle'的值'Clerk':
In [32]:
person_modifications = {'first': 'James', 'middle': 'Clerk'}
person.update(person_modifications)
print person
{'middle': 'Clerk', 'born': 1831, 'last': 'Maxwell', 'first': 'James'}
in
查询字典中是否有该键
In [33]:
barn = {'cows': 1, 'dogs': 5, 'cats': 3}
'chickens' in barn
False
keys
方法,values
方法和items
方法
d.keys()
返回一个由所有键组成的列表;
d.values()
返回一个由所有值组成的列表;
d.items()
返回一个由所有键值对元组组成的列表;
In [36]:
barn.keys()
['cows', 'cats', 'dogs']
barn.values()
[1, 3, 5]
barn.items()
[('cows', 1), ('cats', 3), ('dogs', 5)]
集合
列表和字符串都是一种有序序列,集合 set
是一种无序的序列。
因为集合是无序的,所以当集合中存在两个同样的元素的时候,Python只会保存其中的一个(唯一性);同时为了确保其中不包含同样的元素,集合中放入的元素只能是不可变的对象(确定性)。
集合生成
可以用set()
函数来显示的生成空集合:
In [1]:
a = set()
type(a)
也可以使用一个列表来初始化一个集合:
In [2]:
a = set([1, 2, 3, 1])
a
{1, 2, 3}
集合会自动去除重复元素 1
。
可以看到,集合中的元素是用大括号{}
包含起来的,这意味着可以用{}
的形式来创建集合:
In [3]:
a = {1, 2, 3, 1}
a
{1, 2, 3}
但是创建空集合的时候只能用set
来创建,因为在Python中{}
创建的是一个空的字典:
集合操作
并
两个集合的并,返回包含两个集合所有元素的集合(去除重复)。
可以用方法 a.union(b)
或者操作 a | b
实现。
交
两个集合的交,返回包含两个集合共有元素的集合。
可以用方法 a.intersection(b)
或者操作 a & b
实现。
差
a
和 b
的差集,返回只在 a
不在 b
的元素组成的集合。
可以用方法 a.difference(b)
或者操作 a - b
实现。
对称差
a
和b
的对称差集,返回在 a
或在 b
中,但是不同时在 a
和 b
中的元素组成的集合。
可以用方法 a.symmetric_difference(b)
或者操作 a ^ b
实现(异或操作符)。
包含关系
两个集合A、B,集合A中任意一个元素都是集合B中的元素,我们就说这两个集合有[包含]关系,称集合A为集合B的子集
要判断 b
是不是 a
的子集,可以用 b.issubset(a)
方法,或者更简单的用操作 b <= a
:
方法只能用来测试子集,但是操作符可以用来判断真子集:( 如果集合A是集合B的子集,并且集合B不是集合A的子集 )
a <= a
True
自己不是自己的真子集:
a < a
False
集合方法
add
方法向集合添加单个元素
跟列表的 append
方法类似,用来向集合添加单个元素。
s.add(a)
将元素 a
加入集合 s
中。
t = {1, 2, 3}
t.add(5)
t
{1, 2, 3, 5}
如果添加的是已有元素,集合不改变:
update
方法向集合添加多个元素
跟列表的extend
方法类似,用来向集合添加多个元素。
s.update(seq)
将seq
中的元素添加到s
中。
t.update([5, 6, 7])
t
{1, 2, 3, 5, 6, 7}
remove
方法移除单个元素
s.remove(ob)
从集合s
中移除元素ob
,如果不存在会报错。
pop方法弹出元素
由于集合没有顺序,不能像列表一样按照位置弹出元素,所以pop
方法删除并返回集合中任意一个元素,如果集合中没有元素会报错。
t.pop()
{3, 5, 6, 7}
discard 方法
作用与 remove
一样,但是当元素在集合中不存在的时候不会报错。
difference_update方法
a.difference_update(b)
从a中去除所有属于b的元素:
不可变集合
对应于元组(tuple
)与列表(list
)的关系,对于集合(set
),Python提供了一种叫做不可变集合(frozen set
)的数据结构。
使用 frozenset
来进行创建:
s = frozenset([1, 2, 3, 'a', 1])
s
frozenset({1, 2, 3, 'a'})
与集合不同的是,不可变集合一旦创建就不可以改变。
不可变集合的一个主要应用是用来作为字典的键,例如用一个字典来记录两个城市之间的距离:
In [2]:
flight_distance = {}
city_pair = frozenset(['Los Angeles', 'New York'])
flight_distance[city_pair] = 2498
flight_distance[frozenset(['Austin', 'Los Angeles'])] = 1233
flight_distance[frozenset(['Austin', 'New York'])] = 1515
flight_distance
Out[2]:
{frozenset({'Austin', 'New York'}): 1515,
frozenset({'Austin', 'Los Angeles'}): 1233,
frozenset({'Los Angeles', 'New York'}): 2498}
由于集合不分顺序,所以不同顺序不会影响查阅结果:
In [3]:
flight_distance[frozenset(['New York','Austin'])]
Out[3]:
1515
In [4]:
flight_distance[frozenset(['Austin','New York'])]
Out[4]:
1515
python基础内容整理(一)的更多相关文章
- python基础内容目录
一 python基础 二 python基础数据类型 三 python文件操作及函数初识 四 python函数进阶 五 python装饰器 六 python迭代器与生成器 七 python ...
- python 基础知识点整理 和详细应用
Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言 ...
- Python基础知识点整理(详细)
Python知识点整理(详细) 输出函数 print()可以向屏幕打印内容,或者在打开指定文件后,向文件中输入内容 输入函数 input([prompt])[prompt] 为输入的提示字符.该函数返 ...
- python基础知识点整理
序列 描述 sequence(序列)是一组有顺序的元素的集合.序列可以包含一个或多个元素,也可以没有任何元素.我们之前所说的基本数据类型,都可以作为序列的元素. 序列有两种:tuple(定值表: 也有 ...
- Python基础内容
1.注释 #单行注释 ‘“多行注释”’ 2.变量 Python没有声明变量的过程(动态类型) 变量名=值,如果是浮点数就定义为浮点类型,如果是整型就定义为整型,如果是字符串就定义为字符串 3.输入和输 ...
- 慕课网Python基础学习整理
# -*- coding: utf-8 -*- """# Python的注释以 # 开头,后面的文字直到行尾都算注释;多行注释开头3个 " 结尾3个 " ...
- python基础内容扩展复习
目录 一.关于编辑器 二.解释型和编译型 三.数据类型 1 一切皆对象 2 深浅拷贝 3 可变类型和不可变类型 四.闭包函数 一.关于编辑器 python开发:pycharm(收费),vscode(免 ...
- Python基础知识整理
//占位,缓缓写完 http://www.xuebuyuan.com/2117676.html 迭代器与生成器http://www.cnblogs.com/wilber2013/p/4652531.h ...
- python 基础知识整理
列表推导式 类似 data=[x+1 for x in range(10)]执行结果就是 [1,2,3,4,5,6,7,8,9,10] 还有 even_numbers=[x for x in rang ...
随机推荐
- 来自AI的Tips——情景智能
来自AI的Tips--情景智能 上一次我们介绍了华为快服务智慧平台是什么,今天我们来侃一侃平台最有代表性的一个流量入口--情景智能(AI Tips). 首先情景智能在哪呢?大家可以拿出自己的华 ...
- Docker的iptables规则在iptables重启后丢失
前因后果 1.在跳板机上使用ansible命令测试机器B时,报错如下,于是就怀疑是网络防火墙的问题 10.10.0.86 | FAILED >> { "failed": ...
- 【JavaScript数据结构系列】06-双向链表DoublyLinkedList
[JavaScript数据结构系列]06-双向链表DoublyLinkedList 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识双向链表 不同于普通链表/单向链表,双向链表最突出 ...
- [JavaWeb基础] 031.dom4j写入xml的方法
上一篇我们讲述了dom4j读取xml的4种方法,甚是精彩,那么怎么样写入xml呢?我们直接看下源码实现. public static void main(String[] args) throws E ...
- PHP生成指定范围的日期
/** * 生成指定范围的日期 * * @param $string $startDate 开始日期 2020-01-01 * @param $string $endDate 结束日期 2020-01 ...
- MySQL select from join on where group by having order by limit 执行顺序
书写顺序:select [查询列表] from [表] [连接类型] join [表2] on [连接条件] where [筛选条件] group by [分组列表] having [分组后的筛选条件 ...
- 资源在windows编程中的应用----菜单
资源在Windows编程中的应用 资源 加速键.位图.光标.对话框.菜单.字符串.工具条 1.菜单的创建 菜单由以下组成部分: (1)窗口主菜单条 (2)下拉式菜单框 (3)菜单项热键标识 (4)菜单 ...
- Rocket - debug - Example: Quick Access
https://mp.weixin.qq.com/s/SxmX-CY2tqvEqZuAg-EXiQ 介绍riscv-debug的使用实例:配置Quick Access功能. 1. Quick Acce ...
- CentOS 虚拟机 下载及 搭建
个人博客网:https://wushaopei.github.io/ (你想要这里多有) CentOS 虚拟机安装包下载 : 链接:https://pan.baidu.com/s/1JDIASm ...
- 解决IIS应用程序池默认回收导致程序崩溃
这些网上常见的解决: 其实他们只知其一不知其二:一味的调长超时时间根本就是治标不治本的解决方案, 超时时间再长也会出现到期时间,那时候我们该怎么办呢?(某些吃瓜群众就会大喊:那我就手动去重启一下呗 ...