理解代码,远比记忆代码更重要

打开notebook或IDE前,可先参考Python基础知识图,以帮助理解代码。

如需要,可点击以下百度网盘链接下载Python基础知识图PDF:

mindmap1_Python基础.pdf

432.7K ·

百度网盘

0.HelloWorld

print('Hello wolrd!')

Hello wolrd!

print('第2个单元格')

第2个单元格

name='Python3:猴子数据分析社群'

name

'Python3:猴子数据分析社群'

1.数据类型输入数据->程序(处理数据)->输出数据:eg.微信公众号,可理解成一个程序

变量名,变量值,变量名格式:nameStr,大小写,不同含义

注释:两种,'''注释''', #注释

不可变的数据类型:字符串、数值、元祖

1.1 字符串 String定义

#案例1:定义字符串

nameStr='马云'

moneyStr2='有钱'

#字符串合并

print('用+将字符串合并:',nameStr+moneyStr2)

用+将字符串合并: 马云有钱

​格式化

#案例2:用%s格式化字符串

str1='我叫%s,俺爹是%s' % ('王思聪', '王健林')

print(str1)

我叫 王思聪 ,俺爹是 王健林

1.2 数值 Number整型

#1)整型:年龄50岁

age=50

age

50浮点型

#2)浮点型:余额宝收益3.53元

money=3.53

print('我余额宝收益是',money)

我余额宝收益是 3.53

1.3 容器容器=钱包,可存放多个数据,有列表list,元祖tuple,集合sets,字典dictionary

1)列表 List定义:方括号

#定义列表:病人姓名

nameList=['猴子','马云','王健林','马化腾']

#列表长度

nameLen=len(nameList)

print('列表长度:病人数目:',nameLen)

列表长度:病人数目: 4

​4个操作(增加、删除、修改、查找)

#1)容器操作:增加

# 尾部增加对象

nameList.append('刘强东')

print('增加1个元素:',nameList)

增加1个元素: ['猴子', '马云', '王健林', '马化腾', '刘强东']

比较append() extend() insert()

a = [1,2]

a.append(('b','c')) # 直接在尾部增加一个对象

print(a)

b = [1,2]

b.extend(('b','c')) # 序列的元素依次在尾部添加

print(b)

c = [1,2]

c.insert(1,'c') # 指定在索引1的元素前!添加一个对象

print(c)

[1, 2, ('b', 'c')]

[1, 2, 'b', 'c']

[1, 'c', 2]

#2)容器操作:删除

# 注意下标索引

del nameList[1]

print('删除第2个元素:',nameList)

删除第2个元素: ['猴子', '王健林', '马化腾', '刘强东']

#3)容器操作:查询

# 使用下标索引来访问列表中的值,下标从0开始

name1=nameList[0]

print('查询列表的第1个元素:',name1)

查询列表的第1个元素: 猴子

#4)容器操作:修改

# 直接指定下标的值

print('修改之前第1个元素是:',nameList[0])

nameList[0]='孙悟空'

print('修改之后第1个元素是:',nameList[0])

修改之前第1个元素是: 猴子

修改之后第1个元素是: 孙悟空

nameList

['孙悟空', '王健林', '马化腾', '刘强东']

2)元祖 Tuple定义:小括号

# 定义元祖

# 6家公司的股票

gafataTuple=('腾讯','阿里巴巴','苹果','谷歌','Facebook','亚马逊','亚马逊')

print(gafataTuple)

('腾讯', '阿里巴巴', '苹果', '谷歌', 'Facebook', '亚马逊', '亚马逊')

# 元祖长度

gafataLen=len(gafataTuple)

print('元祖长度:',gafataLen)

元祖长度: 7

​操作:查询

不能修改

# 操作:查询

# 第1个元素

print('第一个元素的值:',gafataTuple[0])

第一个元素的值: 腾讯

3)集合 Sets定义:花括号

'''容器:集合(Sets)是一个没有重复元素的容器'''

#定义集合

# 定义一个空的集合

stockSets=set()

# 6家公司的股票

gafataSets={'腾讯','阿里巴巴','苹果','谷歌','Facebook','亚马逊','亚马逊'}

print(gafataSets)

{'苹果', '亚马逊', 'Facebook', '腾讯', '阿里巴巴', '谷歌'}

​4个操作(增加、删除、修改、查找)

特点: 没有重复元素,适合去重操作和关系判断

#1)容器操作:增加

# 使用update()增加元素

stockSets.update(['腾讯','阿里巴巴','京东'])

print(stockSets)

{'腾讯', '阿里巴巴', '京东'}

#2)容器操作:删除

stockSets.discard('京东')

print(stockSets)

{'腾讯', '阿里巴巴'}

#3)容器操作:查找

txBool='腾讯' in stockSets

print(txBool)

True

#4)容器操作:修改

#第1步:先删除

stockSets.discard('京东')

#第2步:再添加

# 尾部添加

stockSets.update(['京东'])

print(stockSets)

{'腾讯', '阿里巴巴', '京东'}

4)字典定义:花括号,key-value

'''容器:字典(Dictionary)'''

#定义字典:病人编号和姓名的映射关系

patientDic={'001':'猴子','002':'马云','003':'王健林','004':'马化腾'}

print(patientDic)

{'001': '猴子', '002': '马云', '003': '王健林', '004': '马化腾'}

#定义字典:excel病人数据存储

patientDic2={'001':['猴子',29,'1型糖尿病','较差'],

'002':['马云',34,'2型糖尿病','好转'],

'003':['王健林',28,'1型糖尿病','显著好转'],

'004':['马化腾',52,'2型糖尿病','好转']}

print(patientDic2)

{'001': ['猴子', 29, '1型糖尿病', '较差'], '002': ['马云', 34, '2型糖尿病', '好转'], '003': ['王健林', 28, '1型糖尿病', '显著好转'], '004': ['马化腾', 52, '2型糖尿病', '好转']}

​4个操作(增加、删除、修改、查找)

#1)容器操作:增加

patientDic2['005']=['王思聪',30,'1型糖尿病','好转']

print(patientDic2)

{'001': ['猴子', 29, '1型糖尿病', '较差'], '002': ['马云', 34, '2型糖尿病', '好转'], '003': ['王健林', 28, '1型糖尿病', '显著好转'], '004': ['马化腾', 52, '2型糖尿病', '好转'], '005': ['王思聪', 30, '1型糖尿病', '好转']}

#2)容器操作:删除

del patientDic2['005']

print(patientDic2)

{'001': ['猴子', 29, '1型糖尿病', '较差'], '002': ['马云', 34, '2型糖尿病', '好转'], '003': ['王健林', 28, '1型糖尿病', '显著好转'], '004': ['马化腾', 52, '2型糖尿病', '好转']}

#3)容器操作:查询

# 根据病人编号查询病人信息

valueList1=patientDic2['001']

print(valueList1)

['猴子', 29, '1型糖尿病', '较差']

#4)容器操作:修改

print('修改之前,病人信息:',patientDic2['001'])

patientDic2['001']=['猴子', 29, '1型糖尿病', '好转']

print('修改之后,病人信息:',patientDic2['001'])

修改之前,病人信息: ['猴子', 29, '1型糖尿病', '较差']

修改之后,病人信息: ['猴子', 29, '1型糖尿病', '好转']

print(patientDic2)

{'001': ['猴子', 29, '1型糖尿病', '好转'], '002': ['马云', 34, '2型糖尿病', '好转'], '003': ['王健林', 28, '1型糖尿病', '显著好转'], '004': ['马化腾', 52, '2型糖尿病', '好转']}

​items() values() keys()items() 函数以列表返回可遍历的(键, 值) 元组数组

keys() 函数以列表返回一个字典所有的键

values()函数以列表返回一个字典所有的值

webDict = {'Google': 'www.google.com', 'Runoob': 'www.runoob.com', 'taobao': 'www.taobao.com'}

print ('字典 :%s' % webDict.items())

print('键 :%s' % webDict.keys())

print('值 :%s' % webDict.values())

for key,value in webDict.items():

print (key,value)

字典 : dict_items([('Google', 'www.google.com'), ('Runoob', 'www.runoob.com'), ('taobao', 'www.taobao.com')])

键 :dict_keys(['Google', 'Runoob', 'taobao'])

值 :dict_values(['www.google.com', 'www.runoob.com', 'www.taobao.com'])

Google www.google.com

Runoob www.runoob.com

taobao www.taobao.com

1.3 布尔 boolTrue,False

print(1==1)

True

print(1<0)

False

1.4 空值 None

age=None

if age==None:

print('年龄是空值')

else:

print('年龄不是空值')

年龄是空值

2.条件判断代码块格式:缩进,if-elif-else

边界条件:值比较,逻辑比较

'''边界条件:值判断'''

# 案例:判断豆瓣评分是否看《摔跤吧,爸爸》

scoreNum=9.1

if scoreNum >=8 :

print('我要去看这部电影')

else:

print('电影太烂,不去看了')

我要去看这部电影

'''边界条件:逻辑判断'''

# 案例:判断是否有叫猴子的病人

nameList=['猴子','马云','王健林','马化腾']

if '猴子' not in nameList:

print('列表中没有叫猴子的病人')

else:

print('列表中有个叫猴子的病人')

列表中有个叫猴子的病人

'''多个条件判断:if-elif-else'''

age=int(input('输出狗狗的年龄,按enter键获取对应人类的年龄:'))

if age < 0 :

print('狗狗年龄不能小于0')

elif age == 1:

print('相当于14岁的人')

elif age == 2 :

print('相当于22岁的人')

else:

human=22+(age-2)*5

print('对应人类年龄',human)

输出狗狗的年龄,按enter键获取对应人类的年龄:4

对应人类年龄 32

3.循环:批量处理数据案例1:每天吃饭

#重复性工作

print('吃第1次饭')

print('吃第2次饭')

print('吃第3次饭')

吃第1次饭

吃第2次饭

吃第3次饭

# 定义列表

eatList=['吃第1次饭','吃第2次饭','吃第3次饭']

# 循环

for i in eatList:

print(i)

吃第1次饭

吃第2次饭

吃第3次饭案例2:清洗GAFATA股票数据

'''定义字典:6家公司(GAFATA)的股票key是公司名称,value是股票代码'''

gafataDict={'谷歌':'Goog','亚马逊':'aMZN','Facebook':'FB',

'苹果':'aapl','阿里巴巴':'BABA','腾讯':'0700'}

#将股票代码全部大写

for key,value in gafataDict.items():

#对股票代码转换成大写

newValue=value.upper()

#将转换后新的股票代码赋值给对应的key

gafataDict[key]=newValue

print(gafataDict)

{'谷歌': 'GOOG', '亚马逊': 'AMZN', 'Facebook': 'FB', '苹果': 'AAPL', '阿里巴巴': 'BABA', '腾讯': '0700'}

​continue和breakcontinue:跳出当前循环

break:退出整个循环

# continue用法

# 输出不是苹果的公司股票情况

for key,value in gafataDict.items():

if(key=='苹果'):

continue

print('当前公司:',key,',当前股票代码:',value)

当前公司: 谷歌 ,当前股票代码: GOOG

当前公司: 亚马逊 ,当前股票代码: AMZN

当前公司: Facebook ,当前股票代码: FB

当前公司: 阿里巴巴 ,当前股票代码: BABA

当前公司: 腾讯 ,当前股票代码: 0700

# break用法

# 查找苹果公司的股票代码,并记录查找次数

number=0

for key,value in gafataDict.items():

number=number+1

if(key=='苹果'):

print('查找',key,'公司的股票代码是',value)

break

print('当前公司:',key,',当前股票代码:',value)

print(number)

当前公司: 谷歌 ,当前股票代码: GOOG

当前公司: 亚马逊 ,当前股票代码: AMZN

当前公司: Facebook ,当前股票代码: FB

查找 苹果 公司的股票代码是 AAPL

4

4.函数定义

'''定义函数函数功能:两个数相加输入:x,y是要相加的两个数输出:两个数相加的和'''

def add(x,y):

z=x+y

return z调用:两种方式

# 方式1

a=1

b=2

c=add(x=a,y=b)

print('1和2相加等于',c)

1和2相加等于 3

# 方式2

d=add(a,b)

print('1和2相加等于',d)

1和2相加等于 3

​函数参数:不可变/可变数据类型

# 不可变数据类型:字符串、数值、元祖

def changeInt(a):

a=a+1

'''使用函数参数是不可变数据类型(字符串,元祖,数值):传递的只是该数据类型的值(相当于复制一份)'''

b=1

print('调用函数之前b的值=',b)

changeInt(b)

print('调用函数之后b的值=',b)

调用函数之前b的值= 1

调用函数之后b的值= 1

# 可变数据类型

def changeList(inputList):

inputList.append('奶茶妹妹')

'''使用函数参数是可变数据类型:传递的是该变量的引用地址'''

nameList=['马云','刘强东']

print('调用函数之前的值:',nameList)

changeList(nameList)

print('调用函数之后的值:',nameList)

调用函数之前的值: ['马云', '刘强东']

调用函数之后的值: ['马云', '刘强东', '奶茶妹妹']变量作用域:全局/局部定义在函数内部的变量拥有一个局部作用域:只能在其被声明的函数内部访问

定义在函数外的拥有全局作用域:可以在整个程序范围内访问

#局部作用域,在生命函数外访问会出错

def test():

aStr='别理会他人闲言闲语,今日随他们,让他们说吧,你的机会将会到来,再来证明自己。'

#在函数外面,访问函数内的局部变量aStr

print(aStr)

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

in

4

5 #在函数外面,访问函数内的局部变量aStr

----> 6 print(aStr)

NameError: name 'aStr' is not definedpython特点:可嵌套定义函数:调用外层函数时,运行到的内层def语句仅仅是完成对内层函数的定义,而不会去调用内层函数,除非在嵌套函数之后又显式调用

可返回一个函数

嵌套作用域:在嵌套的函数返回后却仍然有效,即闭包的现象

闭包:在一个内部函数中,对外部作用域的变量进行引用,(并且一般外部函数的返回值为内部函数),那么内部函数就被认为是闭包

# 案例1:嵌套定义

def f1():

x = 88

def f2():

print(x)

f2() # 显式调用

x=90

f1()

88

# 案例2:嵌套作用域,闭包现象

# 函数f1中定义了函数f2,f2引用了f1嵌套作用域内的变量x,并且f1将函数f2作为返回对象进行返回

def f1():

x = 88

def f2():

return x

return f2

# 变量action获取了返回的f2,虽然此时f1函数已经退出结束了,但是f2仍然记住了f1嵌套作用域内的变量名x

action = f1()

action()

88

# 案例3:闭包

def maker(n):

k=8

def action(x):

return x**n+k

return action

f=maker(2)

f(4) # 内嵌函数就是通过调用工厂函数时,运行内部的def语句而创建的

24

5.模块内置模块

第三方包

包的组织结构:模块 .py文件:python只能导入.py文件

包 文件夹

5.1 内置模块

''''Python内置模块'''

#第1步:引入模块

import sys

#第2步:使用模块中的函数,属性

pathList=sys.path

print('Python 路径为:\n', pathList)

Python 路径为:

['C:\\Users\\queenie_yoga\\第2关:零基础掌握人工智能核心语言Python', 'D:\\Coding\\Anaconda3\\python37.zip', 'D:\\Coding\\Anaconda3\\DLLs', 'D:\\Coding\\Anaconda3\\lib', 'D:\\Coding\\Anaconda3', '', 'D:\\Coding\\Anaconda3\\lib\\site-packages', 'D:\\Coding\\Anaconda3\\lib\\site-packages\\win32', 'D:\\Coding\\Anaconda3\\lib\\site-packages\\win32\\lib', 'D:\\Coding\\Anaconda3\\lib\\site-packages\\Pythonwin', 'D:\\Coding\\Anaconda3\\lib\\site-packages\\IPython\\extensions', 'C:\\Users\\queenie_yoga\\.ipython']

5.2 第三方包

# 安装包

'''Anaconda Prompt命令行,进入conda环境使用conda命令安装包:conda install pandas使用第三方模块:pandaspandas是数据分析工具'''

#引入模块

import pandas as pd

#文件路径(注意本地路径或可上传到jupyter服务器)

fileNameStr='E:\Queenie\充电集合\数据分析\数据分析(高级)(Python)\第2关:零基础掌握人工智能核心语言Python\数据\病历数据.xlsx'

'''若直接运行后的报错信息是:ImportError: Install xlrd>=0.90 for Excel support意思为,缺少读取Excel文件的包xlrd需用conda命令安装,在conda中输入以下安装包的命令即可:conda install xlrd'''

#读取excel文件里的数据

xl = pd.ExcelFile(fileNameStr)

'''Excel里面可以有多个工作表(Sheet)这里参入的参数值“Sheet1”,就是某个工作表的名称,而不是Excel的文件名。我们可以打开Excel文件,会看到工作表(Sheet)对应的名称,默认的工作表名称是“Sheet1”(注意大小写)你也可以修改这个工作表的名称,然后传入对应的名称,就会根据名称读取这个工作表里的数据了注意这个名称如果是英文,注意大小写,我一般喜欢从Excel中复制这个名称过来,以防错误'''

#获取指定工作表(Sheet)名称的数据

patientDf = xl.parse('Sheet1')

print(patientDf)

病人编号 姓名 年龄 糖尿病类型 病情

0 1 猴子 29 1型糖尿病 较差

1 2 马云 34 2型糖尿病 好转

2 3 王健林 28 1型糖尿病 显著好转

3 4 马化腾 52 2型糖尿病 较差

6.数据结构(collections包)

from collections import deque

6.1 队列 queue入队(尾部)

#定义队列:排队吃饭人的编号

queue=deque(['001','002','003','04','005'])

#入队:在队列尾部插入元素

queue.append('006')

print(queue)

deque(['001', '002', '003', '04', '005', '006'])

​出队(头部)

#出队:在队列头部删除元素

queue.popleft()

'001'

print(queue)

deque(['002', '003', '04', '005', '006'])

6.2 栈 stack

eg.浏览器前进后退按钮

#定义栈:浏览我个人知乎主页的顺序

stack=deque(['知乎动态','知乎回答','知乎文章'])

print(stack)

deque(['知乎动态', '知乎回答', '知乎文章'])

​入栈(顶部)

#入栈:在栈顶加入元素

stack.append('知乎专栏')

print(stack)

deque(['知乎动态', '知乎回答', '知乎文章', '知乎专栏'])

​出栈(顶部)

#出栈:将栈顶元素移除

stack.pop()

'知乎专栏'

print(stack)

deque(['知乎动态', '知乎回答', '知乎文章'])

6.3 排序字典 OrderedDict

'''OrderedDict:按照插入key的顺序,对字典排序'''

from collections import OrderedDict

# 无序字典

# python现版本可有序(以前版本无序)

gafataDict={'腾讯':'H0700','亚马逊':'AMZN','Facebook':'FB',

'苹果':'AAPL','阿里巴巴':'BABA','谷歌':'GOOG'}

gafataDict

{'腾讯': 'H0700',

'亚马逊': 'AMZN',

'Facebook': 'FB',

'苹果': 'AAPL',

'阿里巴巴': 'BABA',

'谷歌': 'GOOG'}

#定义有序字典

gafataOdDict=OrderedDict({'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB',

'苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700'})

gafataOdDict

OrderedDict([('谷歌', 'GOOG'),

('亚马逊', 'AMZN'),

('Facebook', 'FB'),

('苹果', 'AAPL'),

('阿里巴巴', 'BABA'),

('腾讯', '0700')])

6.4 计数器 Counter

'''计数器:可统计词频'''

from collections import Counter

cDict = Counter('有一种鸟是永远也关不住的,因为他们的羽毛太光亮了。羽毛太光亮')

cDict

Counter({'有': 1,

'一': 1,

'种': 1,

'鸟': 1,

'是': 1,

'永': 1,

'远': 1,

'也': 1,

'关': 1,

'不': 1,

'住': 1,

'的': 2,

',': 1,

'因': 1,

'为': 1,

'他': 1,

'们': 1,

'羽': 2,

'毛': 2,

'太': 2,

'光': 2,

'亮': 2,

'了': 1,

'。': 1})

cDict['亮']

2

#出现次数最多的3个词

cDict.most_common(3)

[('的', 2), ('羽', 2), ('毛', 2)]

上一章:Queenie:欢迎光临数据分析世界​zhuanlan.zhihu.com

下一章:Queenie:数据分析2_如何处理一维、二维数据​zhuanlan.zhihu.com

python字典统计排序1_数据分析1_入门Python相关推荐

  1. python字典统计排序1_python-如何按字典顺序对Counter.mostCommon(n)的...

    这里的问题是Counter dict是无序的,并且most_common不在乎键.为此,您需要对字典中的项目进行排序,然后提取最常见的3个项目. counter = Counter('abcdef') ...

  2. python字典统计排序 统计各省份大学数量_1641统计字典排序元音字符串的数量(递归,递归),数目,递推...

    1. 问题描述: 给你一个整数 n,请返回长度为 n .仅由元音 (a, e, i, o, u) 组成且按 字典序排列的字符串数量.字符串 s 按字典序排列需要满足:对于所有有效的 i,s[i] 在字 ...

  3. python公开课免费-公开课 | Python大牛免费带你4天入门Python

    原标题:公开课 | Python大牛免费带你4天入门Python 作为刚入门的同学,无非视频.书籍.网站帖子之类的学习方式,视频虽然讲得详细,但是所需要花费的时间也是巨大的,据我了解很少有人能持之以恒 ...

  4. python excel 数据分析统计服_数据分析从入门到进阶(透彻讲解EXCEL.SQL.TABLEAU、PYTHON四项数据分析必会工具.免费提供1GB数据集...

    透彻讲解Excel.SQL.Tableau.Python四项数据分析必会工具,数据分析工作者的案头推荐工具书.系统介绍数据分析的策略.方法(数据分析之道):实例讲解引导.快速掌握数据分析工具(数据分析 ...

  5. python字典统计_python字典计数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 字典?thcollections.counter 计数器? image.png找 ...

  6. python字典统计单词个数_python字典统计单词个数

    python 字典中的词频统计之后 如何将频数大于一个比如a出现了10次,b15次,c20次,d25次,CSS布局HTML小编今天和大家分享频数大于14的词的个数,应该v={} for i in di ...

  7. python字典怎么排序_如何对python的字典进行排序

    我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value ...

  8. Python字典的排序方法,你用对了吗

    摘要:排序是个古老的话题,不过对于字典的排序,常常会让 小白手足无措.好像没有找到可以排序字典的函数呢!到底是按key排序,还是按value排序呢?字典到底可不可以按value排序呢?排完序后,还可以 ...

  9. python做数据分析难么_做统计学习,数据分析应该学Python还是R?

    如果你是数据分析领域的新兵,那么你一定很难抉择--在进行数据分析时,到底应该使用哪个语言,R还是Python?在网络上,也经常出现诸如"我想学习机器语言,我应该用哪个编程语言"或者 ...

最新文章

  1. 使用admin lte 碰到访问Google字体的问题
  2. Nginx重启时丢失nginx.pid文件解决方法nginx: [emerg] open() “/var/run/nginx/nginx.pid“ failed (2: No such fi
  3. 14.refresh操作
  4. 数论六之计算几何干货——计算几何模板解释全集 及 模板检验训练场
  5. 三星mega2 android os,GALAXY MEGA2
  6. 深入浅出Hadoop: 高效处理大数据
  7. 模式识别的几种基本算法
  8. matlab信号分析与处理:时域分析
  9. win7怎么把计算机放到桌面6,手机投屏到电脑win7最简单具体操作步骤
  10. QuickEdit-手机端强大的代码编辑器
  11. 几款优秀的文档管理系统
  12. PCD文件格式的转换
  13. STM32读写RAM
  14. 论学习过程中“结构化”的思维必要作用
  15. Excel如何快速隔行插入空行
  16. 信息学奥赛一本通——2062:【例1.3】电影票
  17. 从零开始搭建React开发项目之抖音“剪映”——创作课堂(基础入门篇)
  18. 别忘记 DNS 服务器的安全性
  19. 【破解利器】PE工具篇(PE编辑,查看等操作)
  20. 人工智能时代下的数据安全治理

热门文章

  1. Git项目管理修改项目名称
  2. [bzoj4698][SDOI2008]Sandy的卡片
  3. JAVA C++异同
  4. 2500个常用汉字(用来练普通话的)
  5. 固定资产管理mysql_固定资产管理系统数据库设计
  6. 关于人工智能的一些思考
  7. 【影视系列】《乘风破浪》
  8. Android开发——H5容器加载速度优化方案
  9. BZOJ2144: 跳跳棋
  10. mysql怎么集合查询_MySql集合查询