列表推导

示例:生成0-9中能被2整除的序列

z = [i for i in range(10) if i % 2 == 0]
# 运行结果
[0, 2, 4, 6, 8]

使用json模块存储数据 使用json.dump()和json.load()

函数json.dump()接受两个实参:要存储的数据以及可用于存储数据的文件对象。

文件中数据的存储格式与Python中一样 为:[2,3,5,7,11,13]

import json
numbers = [2,3,5,7,11,13]
filename = 'numbers.json'
with open(filename,'w') as f_obj:
    json.dump(numbers,f_obj)

函数json.load()读取文件

import json
filename = 'numbers.json'
with open(filename) as f_obj:
    numbers = json.load(f_obj)
print(numbers)

循环使用技巧

循环字典时 键和值可以使用 items() 同时读取

knights = {'name':'cen','age':20,'sex':'男'}
for k,v in knights.items():
    print(k,v)
# 运行结果
name cen
age 20
sex 男

循环序列时 索引位置和值可以使用 enumerate() 同时得到

for i,j in enumerate(['name','age']):
  	print(i,j)
# 运行结果
0 name
1 age

同时循环两个或更多的序列,可以使用 zip() 整体打包

numbers1 = [1,2,3]
numbers2 = [4,5,6]
for i,j in zip(numbers1,numbers2):
    print(i,j)
# 运行结果
1 4
2 5
3 6

内置数值运算函数

abs()、divmod()、pow()、round()、max()、min()


字符串操作

1.format()方法的格式控制

format()方法中模板字符串的槽除了包括参数序号,还 可以包括格式控制信息。

{<参数序号>: <格式控制标记>}

其中,格式控制标记用来控制参数显示时的格式 。格式 控制标记包括:<填充><对齐><宽度>,<.精度><类型>6个 字段,这些字段都是可选的,可以组合使用。

<填充>、<对齐>和<宽度>主要用于对显示格式的规范。

>>> s = "世界你好"
>>> "{:25}".format(s)    # 左对齐
'世界你好                     '
>>> "{:^25}".format(s)    # 居中对齐
'          世界你好           '
>>> "{:>25}".format(s)    # 右对齐
'                     世界你好'
>>> "{:*^25}".format(s)    #居中对齐且填充*号
'**********世界你好***********'
>>> "{:+^25}".format(s)    # 居中对齐且填充+号
'++++++++++世界你好+++++++++++'
>>> "{:十^25}".format(s)    # 居中对齐且填充汉字十
'十十十十十十十十十十世界你好十十十十十十十十十十十'
>>> "{:^1}".format(s)    # 指定宽度为1,不足变量s的宽度
'世界你好'

<.精度><类型>主要用于对数值本身的规范

<.精度>由小数点(.)开头。对于浮点数,精度表示小 数部分输出的有效位数。对于字符串,精度表示输出的 最大长度。小数点可以理解为对数值的有效截断。

>>> "{:.2f}".format(12345.67890)    # 保留两位小数
'12345.68'
>>> "{:>25.3f}".format(12345.67890)    # 右对齐、25个字符、保留三位小数
'                12345.679'
>>> "{:.5}".format('Hello world!')    # 保留5个字符
'Hello'

<类型>表示输出整数和浮点数类型的格式规则。

对于整数类型,输出格式包括6种:

• b: 输出整数的二进制方式;

• c: 输出整数对应的Unicode字符;

• d: 输出整数的十进制方式;

• o: 输出整数的八进制方式;

• x: 输出整数的小写十六进制方式;

• X: 输出整数的大写十六进制方式;

>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
’110101001,Ʃ,425,651,1a9,1A9‘

对于浮点数类型,输出格式包括4种:

• e: 输出浮点数对应的小写字母e的指数形式;

• E: 输出浮点数对应的大写字母E的指数形式;

• f: 输出浮点数的标准浮点形式;

• %: 输出浮点数的百分形式。

>>> "{0:e},{0:E},{0:f},{0:%}".format(3.14)
'3.140000e+00,3.140000E+00,3.140000,314.000000%'
>>> "{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14) # 对比输出
'3.14e+00,3.14E+00,3.14,314.00%'

常用的方法格式控制信息

>>>"{:.2f}".format(3.1415926)   # 输出小数点后两位 
'3.14' 
>>>"{:x}".format(1010)           # 输出整数的十六机制形式 
'3f2' 
>>>"{:.5}".format("这是一个很长的字符串")  # 输出字符串的前5位 
'这是一个很' 
>>>"{:-^10}".format("PYTHON")   # 居中并填充 
'--PYTHON--'

2.字符串操作符

+、*、in

3.字符串处理函数

len()、str()、chr()、ord()、hex()、oct()

4.字符串处理方法

lower()、upper()、split()、count()、replace()、center()、strip()、join()

>>>"Python".center(20, "=") 
'=======Python======='
>>>"   ==Python==   ".strip(' ') 
'==Python==' 
>>>"   ==Python==   ".strip(' =') 
'Python'

基本数据类型

复数类型

复数类型中实部和虚部都是浮点类型,对于复数z,可以用 z.real和z.imag分别获得它的实数部分和虚数部分 。

>>>(1.23e4+5.67e4j).real
12300.0
>>>(1.23e4+5.67e4j).imag
56700.0
>>>1.23e4+5.67e4j.imag # 先获得5.67e4j的虚部,再与1.23e4进行求和计算
69000.0

complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。

>>>complex(1, 2)
(1 + 2j)
>>> complex(1)    # 数字
(1 + 0j)
>>> complex("1")  # 当做字符串处理
(1 + 0j)
>>> complex("1+2j")
(1 + 2j)

文件的打开和关闭

Python通过open()函数打开一个文件,并返回一 个操作这个文件的变量,语法形式如下: <变量名> = open(<文件路径及文件名>, <打开模式>)

打开模式使用字符串方式表示,根据字符串定义, 单引号或者双引号均可。上述打开模式中, ‘r’ 、 ‘ w ‘ 、 ‘x’ 、 ‘b’可以和’b’ 、 ‘t’ 、 ‘+’组合使用,形成既 表达读写又表达文件模式的方式。

文件使用结束后要用close()方法关闭,释放文件 的使用授权,语法形式如下: <变量名>.close()

文件的读写

文件打开后,对文件的读写有一个读取指针,当从文件 中读入内容后,读取指针将向前进,再次读取的内容将 从指针的新位置开始。

>>>f = open("D://b.txt", "r")
>>>s = f.read()
>>>print(s)
新年都未有芳华,二月初惊见草芽。
白雪却嫌春色晚,故穿庭树作飞花。
>>>ls = f.readlines()
>>>print(ls)
[]
# 结合读取指针理解,上述代码中ls返回值为空, 因为之前f.read()方法已经读取了文件全部内容, 读取指针在文件末尾,再次调用
# f.readlines()方 法已经无法从当前读取指针读入内容,因此返回 结果为空。 
>>>f.close()

f.seek()方法能够移动读取指针的位置,f.seek(0)将读取 指针移动到文件开头,f.seek(2)将读取指针移动到文件 结尾。

从文本文件中逐行读入内容并进行处理是一个基本的文 件操作需求。文本文件可以看成是由行组成的组合类型, 因此,可以使用遍历循环逐行遍历文件,使用方法如下:

f = open(<文件路径及名称>,
"r")
for line in f:
# 处理一行数据
f.close()

f.write(s)向文件写入字符串s,每次写入后,将会记录一个写入指 针。该方法可以反复调用,将在写入指针后分批写入内容,直至文 件被关闭。

f.writelines(lines)直接将列表类型的各元素连 接起来写入文件f 。

>>>ls = ['新年都未有芳华\n','二月初惊见草芽\n','白雪却嫌春色晚\n','故穿庭树作飞花\n']
>>>f = open("D://c.txt", "w")
>>>f.writelines(ls)
>>>f.close()

组合数据类型

集合

Python语言中的集合类型与数学中的集合概念一致,即包含0个或多个数据项的无序组合。n 集合是无序组合,用大括号({})表示,它没有索引和位置的概念,集合中元素可以动态增加或删除。

集合中元素不可重复,元素类型只能是固定数据类型,例如:整数、浮点数、字符串、元组等,列表、字典和集合类型本身都是可变数据类型,不能作为集合的元素出现。

需要注意,由于集合元素是无序的,集合的打印效果与定义顺序可以不一致。由于集合元素独一无二,使用集合类型能够过滤掉重复元素。

>>> s = {1010,"1010",78.9,1010}
>>> type(s)
<class 'set'>
>>> print(s)
{'1010', 1010, 78.9}

集合类型概述

集合类型有4个操作符,交集(&)、并集(|)、差集(-)、补集(^),操作逻辑与数学定义相同。


>>>S = {1010, "1010", 78.9}
>>>T = {1010, "1010", 12.3, 1010, 1010}
>>>S - T
{78.9}
>>>T – S
{12.3}
>>>S & T
{1010,
'1010'}
>>>T & S
{1010,
'1010'}
>>>S ^ T
{78.9, 12.3}
>>>T ^ S
{78.9, 12.3}
>>>S | T
{78.9, 1010, 12.3,
'1010'}
>>>T | S
{1010, 12.3, 78.9,
'1010'}

集合类型常用的操作函数或方法

序列类型通用的操作符和函数

列表操作方法

字典操作方法

一维数据的存储

列表对象输出为CSV格式文件方法如下,采用字 符串的join()方法最为方便。

ls = ['北京','上海','天津','重庆']
f = open("city.csv","w")
f.write(",".join(ls)+ "\n")
f.close()

运行结果

一维数据的读取

对一维数据进行处理首先需要从CSV格式文件读 入一维数据,并将其表示为列表对象。

f = open("city.csv","r")
ls = f.read().strip('\n').split(",")
f.close()
print(ls)

运行结果

二维数据的存储

ls = [['指标', '2014年', '2015年', '2016年'], ['居民消费价格指数', '102', '101.4', '102'], ['食品', '103.1', '102.3', '104.6'],['烟酒及用品', '994', '102.1', '101.5'], ['衣着', '102.4', '102.7', '101.4'], ['家庭设备用品', '101.2', '101', '100.5'],['医疗保健和个人用品', '101.3', '102', '101.1'], ['交通和通信', '99.9', '98.3', '98.7'],['娱乐教育文化', '101.9', '101.4', '101.6'], ['居住', '102', '100.7', '101.6'], ]
f = open('二维数据.csv','w')
for line in ls:
    f.write(','.join(line)+'\n')
f.close()

二维数据的读取

f = open('二维数据.csv', 'r')
ls = []
for line in f:
    ls.append(line.strip('\n').split(','))
 print(ls)

二维数据格式化输出

'''二维数据格式化输出'''
for row in ls:
    line = ""
    for item in row:
        line += "{:20}\t".format(item)
    print(line)

发表回复