python 中的数据结构

python中excel表中两列互换_开发语言

1.1 序列

序列时有索引的数组

举例实现:

a=["北京","上海","广州","深圳","重庆","成都"]
print(a[2])
print(a[-1] + " " + a[-2])
print(a[1:3])
# 运行结果
"""
广州
成都 重庆
['上海', '广州']
"""

在序列中可以实现切片功能,切片功能非常重要,后续再Pandas的应用中会重点学习。

b=["北京","上海","广州","深圳","重庆","成都","兰州","乌鲁木齐"]
print(b[0:5:2])
"""
['北京', '广州', '重庆']
"""

上面代码中,0和5分别是序列的启示和终止位置,2时步长,因此出现这种运行结果。

序列也可以相加

python中excel表中两列互换_元组_02

序列的 in 应用,用于判断字符串中是否存在序列之中

python中excel表中两列互换_开发语言_03

注:sorted()用于对序列进行排序,list()用于将序列转化为列表,len,min,max,等则分别用于计算序列的长度、最小值、最大值……

1.2 列表

  1. 列表创建
    三种创建的方式,一是手工创建,二是创建空列表之后再添加表元素,三是直接创建一个数据列表。
a=["北京","上海","广州","深圳","重庆","成都"]
b=[]
c=list(range(0,20,2))
print(a)
print(b)
print(c)

python中excel表中两列互换_python_04

  1. 列表元素操作
    列表建立之后,主要就是对列表进行增删改,
#用append方式添加列表元素
for i in range(1,10):
    b.append(i)
print("原来的",b)
b.insert(2,2.3)
print("insert方法之后的:",b)
c=[100,200,300]
print("extend之后的:")
b.extend(c)
print(b)
b[0]=10000
print("修改过的:",b)
del b[-1]
print("删除过的:")
b.remove(2.3)
print(b)

python中excel表中两列互换_元组_05

第一个循环以append方式汪列表b中添加数据,再用insert方式往列表中插入数据,insert方式准确的确定插入位置,extend 方法可以实现两个列表的合并,但是只能简单的合并再一块,对重复的数据不会进行处理。

a=[1,2,3]
b=[1,2,4]
a.extend(b)
print('看有重复数据的列表的extend结果:',a)

python中excel表中两列互换_元组_06

列表元素的命令

  • 删除命令:del(根据列表的索引删除),remove(根据列表的值删除)
  • 统计方法:count,index,sum……
  1. 列表循环语句
    一是 for 循环,二是 enumerate 函数
print('for循环的输出:')
for item in a:
    print(item)
print('for+enumerate循环的输出:')
for index,item in enumerate(a):
    print(index+1,item)

python中excel表中两列互换_python中excel表中两列互换_07

1.3 元组

元组内容不可改变,并且可以将不同类型的数据放入元组中

元组与列表的操作很类是,唯一区别在于元组再代码中是用圆括号括起来的

a=("北京","上海","广州","深圳","重庆","成都")
b=()
c=tuple(range(0,20,2))
print(a)
print(b)
print(c)
a=("哈哈","嘿嘿","呵呵")
print(a)

1.4 字典

  1. 字典的典型作用
  • 一、去重统计
  • 二、提高检索效率
  1. 创建字典
    三种方式创建。
  • 手工直接创建
  • 通过单列表的方法创建
  • 通过两个列表的方式创建
# 手工创建
d={'name':'王猪猪','name1':'李大壮'}
if 'name2' in d:
    print(d['name'])
else:
    print(d['name1'])
# 单列表创建,fromkeys语句
a=["北京","上海","广州"]
d1=dict.fromkeys(a)
print(d1)
# zip语句痛过两个列表创建
a2=["哈哈","呵呵","嘿嘿"]
a3=[1,2,3]
d2=dict(zip(a2,a3))
print(d2)
  1. 字典内容的引用
    两种方式引用
  • 直接引用
  • get方法
#直接引用方式和get引用方式
for i in range(len(a2)):
    print(a2[i]+"  "+str(d2[a2[i]]))
    print(a2[i] + "  " + str(d2.get(a2[i])))
  1. 字典的增删改查
d2["嘟嘟"]=4
print(d2)
d2["哈哈"]=10000
print(d2)
del d2["哈哈"]
print(d2)
print(d2.keys())
print(d2.items())
for x in d2.keys():
    print(x)
for y in d2.items():
    print(y)
  1. 字典在多分支判断中的应用
from distutils import log
def stateA():
   print('stateA called')
def stateB():
   print('stateB called')
def stateC():
    print('stateC called')
def stateDefault():
    print('stateDefault called')
cases = {'a':stateA, 'b':stateB, 'c':stateC}#定义一个字典
def switch(case):
  if case in cases:
    cases[case]()
  else:
    stateDefault()

def test():
  switch('b')
  switch('c')
  switch('a')
  switch('x')
test()

先定义四个函数,随后定义一个字典 cases,在随后定义switch 的过程中,可以利用字典的 in 语句获取相应的数据。

1.5 集合

集合是一组元素的组合,其嘴重要的特征是保存不重复元素

  1. 两种创建方式
  • 直接创建
  • 用 set() 函数创建
set1={"北京","上海","广州","深圳"}
set2={"北京","重庆","成都","西安"}
a=["北京","三亚","海口","南宁"]
set3=set(a)
print(set1)
print(set2)
print(set3)
  1. 增删改功能
  • 添加:add
  • 定点删除:remove
  • 弹出方式:pop
set1.add("乌鲁木齐")
print(set1)
set1.remove("乌鲁木齐")
print(set1)
print("现在开始进pop了:")
print(len(set1))
for i in range(1,len(set1)+1):
    set1.pop()
    print(set1)
  1. 集合运算
    交集&,并集|,差集-
set1={"北京","上海","广州","深圳"}
set2={"北京","重庆","成都","西安"}
print(set1 & set2)
print(set1 | set2)
print(set1-set2)
  1. 集合综合案例
import openpyxl
from  openpyxl.reader.excel  import  load_workbook
import sys
import os
wk=load_workbook(filename="基金数据.xlsx")
sht1=wk["基金1"]
sht2=wk["基金2"]
a=set()
b=set()
for i in range(1,sht1.max_row+1):
    a.add(sht1.cell(i,1).value)
for i in range(1,sht2.max_row+1):
    b.add(sht2.cell(i,1).value)
print(a-b)
print(b-a)