Python快速入门:Python对象

简介: Python快速入门:Python对象



Python对象是一种强类型引用,所有对象都有一个特定类型(或类)。

  • 可用type(a)查看对象a的类型
  • isinstance(a,int)查看对象a是否指定类型。

大部分Python对象是可变的(mutable),如列表(list)字典(dict)、Numpy数组以及大部分用户自定义类型;字符串(string)元组(tuple) 是不可变的。

1. 列表(list)

(1) 列表的定义

列表是一个数据集合,动态的,可以随需要伸缩,数据使用的所有内存都由python管理。通过方括号([])list()函数定义。

e.g.

a_list=[2,3,7,None]
tup=('foo','bar','baz')
b_list=list(tup)

(2)列表的切片

访问列表的多个数据可以使用切片,如a_list[0:3]

使用-1,可以实现列表(或元组的反序),如a_list[::-1]

e.g.

a_list = ['a','b','c','h','e']
a_list[:2]

输出:

[‘a’, ‘b’]

a_list[0:5:2] #[start:end:step]

输出:

[‘a’, ‘c’, ‘e’]

a_list[::-1]

输出:

[‘e’, ‘h’, ‘c’, ‘b’, ‘a’]

(3)列表的方法

append() 将元素添加到列表末尾

insert() 将元素插入到列表指定位置

pop() 移除并返回指定索引处的元素

remove() 按值删除元素

sort() 排序

count() 列表中对象的计数

a_list = ['a','b','c','h','e']
a_list.append('a')
a_list

输出:

[‘a’, ‘b’, ‘c’, ‘h’, ‘e’, ‘a’]

a_list.count('a')

输出:

2

a_list.sort()
a_list

输出:

[‘a’, ‘a’, ‘b’, ‘c’, ‘e’, ‘h’]

2. 元组(tuple)

元组是一种一维的、定长的、不可变的Python对象序列。

最简单的创建方式是一组以逗号隔开的值。

对元组型变量表达式进行赋值,Python就会尝试将等号右侧的值进行拆包(unpacking)。

e.g.

my_tuple = (1,3,'a','hello')

3. 字典(dict)

(1) 字典的定义

字典是一种大小可变键值对集,字典的值可以是任何Python对象,但键必须是不可变对象。

创建字典可使用{}dict()工厂函数:

new_d={}new_d=dict()

然后增加数据

d['name']='Eric Idle' 也可 new_d={'name':'Eric Idle'}

将两个序列中的元素两两配对地组成一个字典: maping=dict(zip(range(5),reversed(range(5))))

e.g.

#  dict([k1,v1],[k2,v2]...)
valList = ['a','b','c','d','e']
mapping=dict(zip(range(5),valList))
print(mapping)

输出:

{0: ‘a’, 1: ‘b’, 2: ‘c’, 3: ‘d’, 4: ‘e’}

(2)字典的方法

keys()values() 分别用于获取键和值,分别返回字典中键和值的列表

d1.update(d2) 添加d2中所有项目到d1

list(d)字典的键的列表

sorted(d) 字典的键的列表,排序

key in d 测试特定的键是否在字典中

for key in d 遍历字典的键

dict([k1,v1],[k2,v2],...) 从一个键-值对列表创建一个字典

e.g.

for key in mapping:
    print(mapping[key])

输出:

a

b

c

d

e

4. 集合(set)

集合是由唯一元素组成的无序集,可以看做只有键没有值的字典。

创建集合可使用{}set()工厂函数。

e.g.

a_list = ['a','b','c','h','e','a','e']
a_set = set(a_list)
b_set = {'a','b','c','h','e','a','e'}

集合支持交(&)、并(|)、差(-)、异或(^)的操作。

5. 字符串(string)

Python字符串是不可变的,可以使用单引号(‘)或双引号("),对于带有换行符的多行字符串,可以使用三重引号(’''或"“”)。

反斜杠(\)是转义字符(escape character),可用于指定特殊字符(如\n或unicode字符)。在字符串最左边引号前加上r,表示所有字符按照原样进行转义。

string对象的主要方法:

split() 将一个字符串分解为一个子串列表

find() 在一个字符串中查找一个特定字串

strip() 从字符串去除不需要的空白符

字符串是一串字符序列,可以被当做某种序列类型(如列表、元组等)进行处理。

可以把一个字符串赋值给一个变量,索引一个字符串,切片一个字符串。

e.g.

name = 'Monty'
name[0]

输出:

‘M’

name[:4]

输出:

‘Mont’

name = '.'.join(['Monty','Python'])
name

输出:

‘Monty.Python’

name.split('.')

输出:

[‘Monty’, ‘Python’]

name.find('Python')

输出:

6

name.find('on')

输出:

1

name.find('Monpy')

输出:

-1

6. BIF (Built-in Function)

str() 用来访问任何数据对象(支持串转换)的串表示。

isinstance() 检查一个标识符是否指示某个指定类型的数据对象。

range() 与for结合使用,迭代固定次数。

sorted() 将任何序列返回一个新的有序列表,传入reverse=True可以按降序排列数据。sorted()set()结合可以得到一个由序列中的唯一元素组成的有序列表。

enumerate()可以逐个返回序列的(i,value)元组。

for item in s 遍历s中的元素

for item in sorted(s) 按顺序遍历s中的元素

for item in reversed(s) 按逆序遍历s中的元素

for item in set(s) 遍历s中无重复的元素

for item in set(s).difference(t) 遍历在集合s中不在t的元素

for item in random.shuffle(s) 随机遍历s中的元素

zip()用于将多个序列(列表、元组)中的元素配对,从而产生一个新的元组列表。zip()可以接受任意数量的序列,最终得到的元组数量由最短的序列决定。

e.g.

seq1 = ['foo','bar','baz']
seq2 = ['one','two','three']
zip(seq1,seq2)
for i,(a,b) in enumerate(zip(seq1,seq2)):
    print('%d:%s,%s' %(i,a,b))

输出:

0:foo,one

1:bar,two

2:baz,three

对于“已压缩的”(zipped)序列,zip()可对该序列进行“解压”(unzip)。

e.g.

pitchers = [('Nolan','Ryan'),('Roger','Clemens'),('Schilling','Curt')]
first_names,last_names = zip(*pitchers)
print(first_names, last_names)

输出:

(‘Nolan’, ‘Roger’, ‘Schilling’) (‘Ryan’, ‘Clemens’, ‘Curt’)

7. 列表、集合以及字典的推导式

new_l = []
for t in old_l:
  new_l.append(len(t))

列表推导(函数编程):

new_l = [len(t) for t in old_l]

e.g.

strings = ['a','as','bat','car','car','dove','python']
[s.upper() for s in strings if len(s)>2]

输出:

[‘BAT’, ‘CAR’, ‘CAR’, ‘DOVE’, ‘PYTHON’]

{s.upper() for s in strings if len(s)>2}

输出:

{‘BAT’, ‘CAR’, ‘DOVE’, ‘PYTHON’}

{index:val for index,val in enumerate(strings)}

输出:

{0: ‘a’, 1: ‘as’, 2: ‘bat’, 3: ‘car’, 4: ‘car’, 5: ‘dove’, 6: ‘python’}

dict((index,val) for index,val in enumerate(strings))

输出:

{0: ‘a’, 1: ‘as’, 2: ‘bat’, 3: ‘car’, 4: ‘car’, 5: ‘dove’, 6: ‘python’}

相关文章
|
3月前
|
Python
python对象模型
这篇文章介绍了Python中的对象模型,包括各种内置对象类型如数字、字符串、列表、字典等,以及如何使用`type()`函数来查看变量的数据类型。
|
3月前
|
Python
探索Python中的魔法方法:打造你自己的自定义对象
【8月更文挑战第29天】在Python的世界里,魔法方法如同神秘的咒语,它们赋予了对象超常的能力。本文将带你一探究竟,学习如何通过魔法方法来定制你的对象行为,让你的代码更具魔力。
45 5
|
1月前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
1月前
|
存储 缓存 Java
深度解密 Python 虚拟机的执行环境:栈帧对象
深度解密 Python 虚拟机的执行环境:栈帧对象
63 13
|
1月前
|
索引 Python
Python 对象的行为是怎么区分的?
Python 对象的行为是怎么区分的?
26 3
|
1月前
|
存储 缓存 算法
详解 PyTypeObject,Python 类型对象的载体
详解 PyTypeObject,Python 类型对象的载体
34 3
|
1月前
|
Python
深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
19 1
|
1月前
|
缓存 Java 程序员
一个 Python 对象会在何时被销毁?
一个 Python 对象会在何时被销毁?
41 2
|
1月前
|
API Python 容器
再探泛型 API,感受 Python 对象的设计哲学
再探泛型 API,感受 Python 对象的设计哲学
20 2
|
1月前
|
API Python
当调用一个 Python 对象时,背后都经历了哪些过程?
当调用一个 Python 对象时,背后都经历了哪些过程?
22 2
下一篇
无影云桌面