本文结构

  1. 基本函数(eval,format,字符串处理(split,strip,join),lambda等)
  2. 数据类型辨析

eval(“str”)

去除字符串最外侧的引号,并执行去掉引号后的字符的内容。

str="python"
a= eval("str")
print(a)#结果输出'python'b=eval("'python'")
print(b)#结果同上为'python'c=eval("python")
print(c)
#出错,会显示 python not defined,即把你的python当成自变量,而这个自变量是未定义的。python=123
d=eval("python")
print(d)
#可以先这么理解:
#去除双引号以后执行d=python,python是个变量,变量值等于123,因此输出123

format(var)

包含{}槽的模板字符串.format(逗号分隔的填充参数)


>>>"{0}才是臭{1}".format("Lybrith","弟弟")#参数序号从0开始
'Lybrith才是臭弟弟'#以参数序号对应的参数填充的字符串

槽的格式:{序号:<填充><对齐><宽度><,(千位分隔)><.精度><类型>}

即{序号:<填充(默认空格,只能有一个)><对齐><宽度><,(千位分隔)><.精度(浮点数小数部分的精度,以及字符串的最大输出长度)><类型(整数类型bcdoxX和浮点数类型eEf%)>}

字符串处理 (split(’’),strip(" "),join(list))

#文本文件的读取
>>>print(txt.read)
>___,___,___,___.
>>>print(txt.readlines)
>["___,___,\n","___,___。\n"]

读取每一句话的时候,就需要用strip函数和split函数

  • strip(chars)函数用于去掉左侧右侧出现的chars字符,因此用的是 ‘’ 符号。一维数据的情况下应该可以处理字符串和read,readline,readlines函数的结果,但不能处理多维情况下readlines的结果。
  • split(sep)根据sep分隔字符串,默认为空格,sep可以是字符也可以是字符串,因此’ ’ 和 “”都可以使用。
>>>print(txt.readlines.strip('\n。').split(","))
>["___","___,","___","___"]

csv文件的读取也是相同,csv使用逗号分隔数据

#如果用read读取csv文件,得出来的就是 列表 形式的一段
>>>f=open("D:\R_languaga_main factors_analysis.csv","r")
>>> txt=f.read()
>>> txt
>代码,数学,物理,化学,语文,历史,英语\n1,71,64,94,52,61,52\n2,78,96,81,80,89,76\n3,69,56,67,75,94,80\n4,77,90,80,68,66,60\n5,84,67,75,60,70,63\n6,62,67,83,71,85,77\n7,74,65,75,72,90,73\n8,91,74,97,62,71,66\n9,72,87,72,79,83,76\n10,82,70,83,68,77,85\n11,63,70,60,91,85,82\n12,74,79,95,59,74,59\n13,66,61,77,62,73,64\n14,90,82,98,47,71,60\n15,77,90,85,68,73,76\n16,91,82,84,54,62,60\n17,78,84,100,51,60,60\n18,90,78,78,59,72,86\n19,80,100,83,53,73,70\n20,58,51,67,79,91,85\n21,72,89,88,77,80,83\n22,64,55,50,68,68,65\n23,77,89,80,73,75,70\n24,72,67,61,92,92,88\n25,73,72,70,88,86,79\n26,73,72,70,88,86,79\n27,77,81,62,85,90,87\n28,61,65,81,98,94,95\n29,79,95,83,89,89,79\n30,81,90,79,73,85,80\n31,85,77,75,52,73,59\n32,68,85,70,84,89,86\n33,85,91,95,63,76,66\n34,91,85,100,70,65,76\n35,74,74,84,61,80,69\n36,88,100,85,49,71,66\n37,63,82,66,89,78,80\n38,87,84,100,74,81,76\n39,81,98,84,57,65,69\n40,64,79,64,72,76,74\n41,60,51,60,78,74,76\n42,75,84,76,65,76,73\n43,59,75,81,82,77,73\n44,64,59,56,71,79,67\n45,64,61,49,100,99,95\n46,56,48,61,85,82,80\n47,62,45,67,78,76,82\n48,86,78,92,87,87,77\n49,66,72,79,81,87,66\n50,61,66,48,98,100,96\n'
>>>> print(f.readlines())
['代码,数学,物理,化学,语文,历史,英语\n','1,71,64,94,52,61,52\n', '2,78,96,81,80,89,76\n', '3,69,56,67,75,94,80\n', '4,77,90,80,68,66,60\n', '5,84,67,75,60,70,63\n', '6,62,67,83,71,85,77\n', '7,74,65,75,72,90,73\n', '8,91,74,97,62,71,66\n', '9,72,87,72,79,83,76\n', '10,82,70,83,68,77,85\n', '11,63,70,60,91,85,82\n', '12,74,79,95,59,74,59\n', '13,66,61,77,62,73,64\n', '14,90,82,98,47,71,60\n', '15,77,90,85,68,73,76\n', '16,91,82,84,54,62,60\n', '17,78,84,100,51,60,60\n', '18,90,78,78,59,72,86\n', '19,80,100,83,53,73,70\n', '20,58,51,67,79,91,85\n', '21,72,89,88,77,80,83\n', '22,64,55,50,68,68,65\n', '23,77,89,80,73,75,70\n', '24,72,67,61,92,92,88\n', '25,73,72,70,88,86,79\n', '26,73,72,70,88,86,79\n', '27,77,81,62,85,90,87\n', '28,61,65,81,98,94,95\n', '29,79,95,83,89,89,79\n', '30,81,90,79,73,85,80\n', '31,85,77,75,52,73,59\n', '32,68,85,70,84,89,86\n', '33,85,91,95,63,76,66\n', '34,91,85,100,70,65,76\n', '35,74,74,84,61,80,69\n', '36,88,100,85,49,71,66\n', '37,63,82,66,89,78,80\n', '38,87,84,100,74,81,76\n', '39,81,98,84,57,65,69\n', '40,64,79,64,72,76,74\n', '41,60,51,60,78,74,76\n', '42,75,84,76,65,76,73\n', '43,59,75,81,82,77,73\n', '44,64,59,56,71,79,67\n', '45,64,61,49,100,99,95\n', '46,56,48,61,85,82,80\n', '47,62,45,67,78,76,82\n', '48,86,78,92,87,87,77\n', '49,66,72,79,81,87,66\n', '50,61,66,48,98,100,96\n']

strip返回字符串,split对strip的结果处理,返回列表
如果对csv文件运用strip函数会报错,如下:

>>>txt=f.readlines().strip('\n').split(",")
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'strip'
  • join函数 形式为str.join(iter),将str插入iter变量之间形成新的字符串。主要用于写入csv文件。例如:
>>> " ".join(["1","2","3","4","5"])
'1 2 3 4 5'
>>> ",".join(["1","2","3","4","5"])
'1,2,3,4,5'
>>> "skrskr".join(["1","2","3","4","5"])
'1skrskr2skrskr3skrskr4skrskr5'str=["广州”,“12”,“3","重庆")
>>>f.write(","t.join(str)+"\n")
生成的csv文件内容是:
广州,12,3,重庆

使用Join语句写入二维数据如下

>>>f=open("D:\R_languaga_main factors_analysis.csv","r")
>two_dimension_data=[]#创建空二维数组
>for line in f:#之所以用Line因为按行读取,对二维数据的读取跟一维数据有点不一样,需要用到循环
>    two_dimension_data.append(line.strip('\n').split(","))
>f.close()
>>w=open("write_in.csv","w")
>for row in two_dimension_data:#列表读到一个数据(也是一个列表),然后用“,”连接起来。
>    w.write(",".join(row)+"\n")
>w.close()
>#结果应该是两个文件内容完全相同。

补充: 对多维数据的读取并写出

f=open("D:\R_languaga_main factors_analysis.csv","r")
line=""
ls=[]
for line in f:ls.append(line.strip('\n').split(","))
f.close()
#写出二维数据表
for row in ls:line=""for item in row:#需要用到双循环来对每一个元素进行处理line+="{:10}\t".format(item)print(line)
#结果是
代码          数学          物理          化学          语文          历史          英语
1           71          64          94          52          61          52
2           78          96          81          80          89          76
3           69          56          67          75          94          80
4           77          90          80          68          66          60
5           84          67          75          60          70          63
6           62          67          83          71          85          77
7           74          65          75          72          90          73
8           91          74          97          62          71          66
9           72          87          72          79          83          76
10          82          70          83          68          77          85
11          63          70          60          91          85          82
12          74          79          95          59          74          59
13          66          61          77          62          73          64
14          90          82          98          47          71          60

Lambda函数

lambda <语句>: <返回值>,如果满足语句的表达式,则返回给定值
常见用法:

>>>lambda x,y,z:x+y+z#求和
#对元素是列表的列表按键值values排序
>>>list.sort(key=lambda x:x[1], reverse=True)

其他函数(print, divmod, 转换类型函数)

print 函数的三种形式


>>>print("".format())#格式化输出
>>>print( ,end=" ")#改变结尾,可以不用"\n"换行符结尾
>>>print(var1,var2,var3)#输出多变量

divmod(x,y)= (x//y,x%y),以元组的形式给出x//y,x%y的值
round(x,d) 表示对x四舍五入,保留d位小数。默认没有d,则返回四舍五入的整数值,跟excel四舍五入的公式格式一致。
sort函数默认是升序输出,将参数改成reverse = True了则是降序输出
其他进阶函数参考如下教程:

Python Lambda表达式

数据类型

集合{} 序列() 列表 [] 字典{: }
序列类型主要是字符、列表、元组,所有序列都支持迭代,序列表示索引为非负整数的有序对象集合。其中字符和元组属于不可变序列,列表可变(元组类型一旦编译就不能修改,而元组类型的所有操作都可以由列表类型实现)。

#列表的索引正负,0元素是绝对不变的
>>>ls=[1020,"1021",["1022","1023"]]
>>>print(s[-1])
['1022','1023']
>>> print(ls[0:2:2])
[1020]#如果最后一步正好是列表最后一个元素,应该是不输出的
>>> ls.append("2012")
>>> print(ls[0:3:2])
[1020, ['1022', '1023']]
#索引头尾两个值最好同正同负,一正一负容易出现意想不到的结果

主要是掌握字典的一些函数

#两种创建字典的方式
>>>dict1=dict()
>>>dict2={"x1":"y1","x2":"y2","x3":"y3"}
#给空字典赋值
>>>dic1["key1"]="var1"
>>>dic1["key2"]="var2"
#返回键值对中的其中一个
>>>dic1.values()
['var1','var2']
>>>dic2.keys()
['x1','x2','x3']

词频统计是最常见的一个例子了,最常用的函数是dic.get(key,defult),找到对应键的值下,若不存在则返回默认值。
下面就是本文的最后的内容了,附上一段英文文本的词频统计的代码:

>>>txt=open("soure_txt.txt","r").read().lower()
>>>for ch in '!#$&*()+,-./<=>?@#[\\]~`^"”{|}':txt=txt.replace(ch," ")return txt
>>>lines=txt.split(" ")
>>>words={}
>>>for word in lines:#最常考的词频统计语句
>    words[words]=words.get(word,0)+1
>>>words_lists= list(words.items)#将字典的所有键值对建立列表
>>>items.sort(key=lambda x:x[1],reverse=True)#按照列表的每个元素的[1]列进行排序,最大的先输出
>>>for i in range(10):#输出top 10
>    word,counts=item[i]#元素为列表的列表将值分别赋给两个变量
>    print("{0:<10}{1:>5}",format(word,counts))
>

【Python】Python 基本函数与操作-适合Python入门相关推荐

  1. python经典小游戏五子棋,适合python编程的小游戏

    python入门可以做的小游戏 1.Python入门拼图小游戏简单介绍:将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状. 2.Python入门推箱子 ...

  2. 编程软件python中的if用法-适合Python初学者的一些编程技巧

    这篇文章主要介绍了给Python初学者的一些编程技巧,皆是基于基础的一些编程习惯建议,需要的朋友可以参考下 交换变量 x = 6 y = 5 x, y = y, x print x >>& ...

  3. 超级详细的Python程序设计学习笔记,适合Python二级备考和自学Python的小白(me too)

    超级详细的Python学习笔记,适合Python二级备考和自学Python的小白(me too). 写作不易,喜欢的话点个赞吧

  4. python 进阶 【封装】 适合小白入门

    面向对象的三大特性: 封装,继承,多态 是面向对象的三大特性 面向对象编程,是许多编程语言都支持的一种编程思想. 简单理解是:基于模板(类)去创建实体(对象),使用对象完成功能开发. 封装: 封装指的 ...

  5. python可以做什么项目-适合Python 新手的5大练手项目,你练了么?

    已经学习了一段时间的Python,如果你看过之前W3Cschool的文章,就知道是时候该进去[项目]阶段了. 但是在练手项目的选择上,还存在疑问?不知道要从哪种项目先下手? W3Cschool首先有两 ...

  6. python新手练习项目_适合Python 新手的5大练手项目,你练了么?

    已经学习了一段时间的Python,如果你看过之前W3Cschool的文章,就知道是时候该进去[项目]阶段了. 但是在练手项目的选择上,还存在疑问?不知道要从哪种项目先下手? W3Cschool首先有两 ...

  7. python能做什么项目-适合Python 新手的5大练手项目,你练了么?

    已经学习了一段时间的Python,如果你看过之前W3Cschool的文章,就知道是时候该进去[项目]阶段了. 但是在练手项目的选择上,还存在疑问?不知道要从哪种项目先下手? W3Cschool首先有两 ...

  8. python会员折扣_Python骚操作 | 用python爆破某会员网站

    早上照例闲逛,发现简书出了个很有意思的作者,ID叫做爷是奥巴马,发的文章也是不同凡响,上来就对别人家网站玩爆破... -------------------------------- 暑假在家上网,q ...

  9. python从零开始到精通_「Python 入门学习指南」0基础小白助你从入门到精通!

    Python比较简单,非常适合初学者入门,内置了各种库,还有丰富的大约13万第三方库,掌握了语法和编程思维后,可以直接使用这些库做出自己的产品.这篇 Python 入门学习指南,针对没有任何编程经验. ...

  10. Python中的序列操作

    Python中的序列操作 分类: python undefined 官方手册:https://docs.python.org/3.7/library/stdtypes.html#sequence-ty ...

最新文章

  1. ADO.NET—数据提供程序(连接类)
  2. 移动端通过ajax上传图片(文件)并在前台展示——通过H5的FormData对象
  3. 为什么下拉框拉不下来_为什么体重降不下来?4个饮食方法降低热量摄入,让体重降下来...
  4. Tomcat Server.xml 标签详解 .
  5. ux设计中的各种地图_UX写作中的移情
  6. 指针常量与常量指针精解【一次掌握】
  7. path环境变量丢失恢复
  8. hibernate笔记(一)
  9. 【每日算法Day 103】老题新做,几乎不会有人想到的解法,它来了
  10. 山东大学往年c语言期末试题及答案,山东大学历年C语言题库.pdf
  11. UEFI开发探索31–鼠标GUI构建
  12. 关于SOME/IP的理解
  13. vue实现登录验证码
  14. Qt网络编程01-QTcpSocket和QTcpServer的基本使用
  15. 反向Telnet突破防火墙封锁
  16. “鹏城”伴你鹏程:下届全国人工智能大赛再会!
  17. Mysql中如何根据.frm和.idb文件恢复表结构
  18. gitlab fatal: could not read Username for : Device not configured
  19. 让网站更新快照的方法
  20. java毕业生设计高校教材征订管理系统计算机源码+系统+mysql+调试部署+lw

热门文章

  1. ACM常用算法模版(常用函数与STL、重要公式与定理)
  2. visual studio fatal error C1083: 无法打开源文件
  3. SSM+高校学生综合评测系统 毕业设计-附源码200851
  4. 无侵入式的mysql的binlog采集——maxwell采集binlog放到kafka中——成功!
  5. JSP页面只显示源代码不显示网页内容
  6. 离开了公司,你还有什么
  7. c语言学生班级通讯录,C语言做学生通讯录
  8. 基于C语言编写的电子通讯录
  9. ctfshow中Misc入门WP(超级全)
  10. C语言输出一个19行实心菱形,C语言打印菱形