基本数据类型

字符串 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 实现。

ab 的差集,返回只在 a 不在 b 的元素组成的集合。

可以用方法 a.difference(b) 或者操作 a - b 实现。

对称差

ab 的对称差集,返回在 a 或在 b 中,但是不同时在 ab 中的元素组成的集合。

可以用方法 a.symmetric_difference(b) 或者操作 a ^ b 实现(异或操作符)。

包含关系

两个集合AB,集合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基础内容整理(一)的更多相关文章

  1. python基础内容目录

    一  python基础 二  python基础数据类型 三  python文件操作及函数初识 四  python函数进阶 五  python装饰器 六  python迭代器与生成器 七  python ...

  2. python 基础知识点整理 和详细应用

    Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言 ...

  3. Python基础知识点整理(详细)

    Python知识点整理(详细) 输出函数 print()可以向屏幕打印内容,或者在打开指定文件后,向文件中输入内容 输入函数 input([prompt])[prompt] 为输入的提示字符.该函数返 ...

  4. python基础知识点整理

    序列 描述 sequence(序列)是一组有顺序的元素的集合.序列可以包含一个或多个元素,也可以没有任何元素.我们之前所说的基本数据类型,都可以作为序列的元素. 序列有两种:tuple(定值表: 也有 ...

  5. Python基础内容

    1.注释 #单行注释 ‘“多行注释”’ 2.变量 Python没有声明变量的过程(动态类型) 变量名=值,如果是浮点数就定义为浮点类型,如果是整型就定义为整型,如果是字符串就定义为字符串 3.输入和输 ...

  6. 慕课网Python基础学习整理

    # -*- coding: utf-8 -*- """# Python的注释以 # 开头,后面的文字直到行尾都算注释;多行注释开头3个 " 结尾3个 " ...

  7. python基础内容扩展复习

    目录 一.关于编辑器 二.解释型和编译型 三.数据类型 1 一切皆对象 2 深浅拷贝 3 可变类型和不可变类型 四.闭包函数 一.关于编辑器 python开发:pycharm(收费),vscode(免 ...

  8. Python基础知识整理

    //占位,缓缓写完 http://www.xuebuyuan.com/2117676.html 迭代器与生成器http://www.cnblogs.com/wilber2013/p/4652531.h ...

  9. 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 ...

随机推荐

  1. PHP 调用qq邮箱接口

    html代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...

  2. 2.Redis安装和简单使用

    (1)安装Redis Redis目前只支持Linux系统,因为开发此软件的创始者认为,Redis是为后台数据服务的,所以认为该软件使用在纯净的服务环境下,而不是应用型操作系统下,而Linux作为服务器 ...

  3. unicode、encode、decode

    1.encode与decode:unicode经过encode -> utf-8,反过来为decode. 爬虫读取网页内容和pandas读取csv时,会把读取到的文字内容转成unicode,当我 ...

  4. 使用jetty作为内嵌服务器启动项目

    http://blog.csdn.net/robinpipi/article/details/7557035 需求:把jetty作为内嵌的一个服务器,直接启动,web项目不用部署在应用服务器中.在网上 ...

  5. Chisel3 - Tutorial - ShiftRegister

    https://mp.weixin.qq.com/s/LKiXUgSnt3DzgFLa9zLCmQ   简单的寄存器在时钟的驱动下,逐个往下传值.   参考链接: https://github.com ...

  6. TCP / IP 精彩回顾-必看

    TCP/IP 协议出现的原因是互联网世界各个主机作为一个个独立的个体,如何制定统一的规则让他们互相通信是达成万物互联的纽带.基于此,设定了 TCP/IP 协议来规范网络访问行为.TCP/IP 并不是一 ...

  7. 蓝桥杯 算法训练 P0505(Java解法)

    一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积.阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中:而35!就更大了,它已经无法存放在一个浮点型变量中.因此, ...

  8. Java实现 LeetCode 42 接雨水

    42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这 ...

  9. java矩形的关系

    在编写图形界面软件的时候,经常会遇到处理两个矩形的关系. 如图[1.jpg]所示,矩形的交集指的是:两个矩形重叠区的矩形,当然也可能不存在(参看[2.jpg]). 两个矩形的并集指的是:能包含这两个矩 ...

  10. Linux 文件系统属性chattr权限

    chattr命令 格式:chattr [+-=] [选项] 文件或目录名,其中,+表示增加权限,-表示删除权限,=表示等于某权限(对超级用户root也有用),比如:chattr +i /project ...