那些重要但是容易被忽略的python编程基础知识

python很容易上手,工具包特别多,入门后就特别容易忽略python的基本特性。这里将特别关注python那些特别基础,重要但是不起眼的地方。

变量类型

标准数据类型

数字、字符串、列表,元组和字典。

首先看看列表list,列表元素及其index对应关系如下图所示。
在这里插入图片描述
python list支持用索引切片的方式读取list的部分内容。
删除列表中第3个元素:del a[2]
将两个列表组合在一起: [1,2,3]+[4,5,6] 得到[1,2,3,4,5,6]
列表的长度: len(a)
重复创建列表:[1]*4 得到 [1, 1, 1, 1]
列表中是否有某个元素: 2 in [1,2] 返回 True
连同下标一起迭代:

a = ['runoob', 786, 2.23, 'john', 70.2]

for idx, ia in enumerate(a):
    print(idx, ia)

得到:

0 runoob
1 786
2 2.23
3 john
4 70.2

列表内置方法如下:

list.append( obj ) 在列表的末尾添加元素,例如a.append(3)
list.count(obj) 统计某个元素在列表中出现的次数
list.extend(seq) 扩展原来的列表,在其末尾一次性追加seq中的所有元素
list.index( obj ) 从列表中找出某个值的第一个匹配项目的索引位置
list.insert( index, obj ) 将对象插入列表
list.pop(index) 移除列表中的一个元素(默认是最后一个元素),并且返回该元素的值
list.remove(obj) 移除列表中某个值的第一个匹配项
list.reverse( ) 对列表中的所有元素倒序排列

一定要注意这些方法都是对列表本身进行操作,直接改变原list,内置方法的返回值为None。
例如:

b = ['Google', 'Runoob', 'Taobao', 'Google', 'Being', 'Huawei','Taobao', 'Google']
print(b.count('Google'))
print(b.index('Taobao'))

b.remove('Taobao')
print(b)
b.insert(9,'Last')
print(b)
b.insert(4, 'Mid')
print(b)

对列表中的元素进行排序。如果是字符串,就按照首字母,如果是数字,按照从小到大。但如果是数字和字符串混合的列表,不能用sort() 内置方法排序。

print('list b:')
print(b)
print('sorted: ' )
b.sort()
print(b)

print('sorted reversly: ' )
b.sort(reverse=True)
print(b)

c = [3, 15, 62, 4, 23]
c.sort()
print(c)
c.sort(reverse=True)
print(c)


d = b+c
print(d)
d.sort()
print(d)

得到:

list b:
['Google', 'Runoob', 'Google', 'Being', 'Mid', 'Huawei', 'Taobao', 'Google', 'Last']
sorted: 
['Being', 'Google', 'Google', 'Google', 'Huawei', 'Last', 'Mid', 'Runoob', 'Taobao']
sorted reversly: 
['Taobao', 'Runoob', 'Mid', 'Last', 'Huawei', 'Google', 'Google', 'Google', 'Being']
[3, 4, 15, 23, 62]
[62, 23, 15, 4, 3]
['Taobao', 'Runoob', 'Mid', 'Last', 'Huawei', 'Google', 'Google', 'Google', 'Being', 62, 23, 15, 4, 3]
TypeError: '<' not supported between instances of 'int' and 'str'

字典

字典是可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 。
例如:

grades = {'Alice': 98, 'Joe': 90, 'Julia': 99, 'Bob':76, 'Ann':66, 'Moley':100, 'Hill':50}

print(grades['Alice'])

del grades['Moley']
print(grades)

sum35 = {1:34, 32:3, 2:33}
print(sum35)

值得注意的是,python的字典不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。第二,键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。

字典的内置函数&方法

cmp(dic1, dic2)比较两个字典的元素
len(dic) 返回字典元素的个数
str(dic) 输出字典可打印的字符串表示
type(dic) 返回输入变量的类型

内置方法有:
dic.clear() 删除字典内的所有元素
dic.copy() 返回一个字典的浅复制
dic.get(key,default=None)
dic.has_key(key)
dic.itmes() 以列表返回可遍历的元组数组
dic.keys() 以列表返回字典中所有的键
dic.values() 以列表的形式返回所有的值

例如:

grades.items()
Out[73]: dict_items([('Alice', 98), ('Joe', 90), ('Julia', 99), ('Bob', 76), ('Ann', 66), ('Hill', 50)])


字符串前符号

字符串前加 u
例: u"我是含有中文字符组成的字符串。"

作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。

字符串前加 r
例:r"\n\n\n\n”  # 表示一个普通生字符串 \n\n\n\n,而不表示换行了。

作用:去掉反斜杠的转移机制。(特殊字符:即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。 )

应用:常用于正则表达式,对应着re模块。

字符串前加 b
例:response = b'<h1>Hello World!</h1>' # b' ' 表示这是一个 bytes 对象

作用:
b" "前缀表示:后面字符串是bytes 类型。

用处:
网络编程中,服务器和浏览器只认bytes 类型数据。如:send 函数的参数和 recv 函数的返回值都是 bytes 类型

在 Python3 中,bytes 和 str 的互相转换方式是
str.encode(‘utf-8’)
bytes.decode(‘utf-8’)

发布了111 篇原创文章 · 获赞 118 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/happyhorizion/article/details/103872402