《python基础》~ 1

python 基础 :数值,链表,字符串

很多网站上都有python教程,不一而足,本篇教程会结合我在实际开发过程中遇到的问题,总结出很多有意思的小tricks。我会把你当做python小白来看待,所以不要心急和担心,一步步的讨教一下python的招式。



数值

python是一门动态语言,它可以在运行时声明和使用变量,同时它也是一种强类型的语言,这一点有别于PHP,python会提供强制类型转换的方法,与java类似,但是PHP的话编译器会自动识别你所运用的变量到底是哪种类型。


注意:‘123’可以通过int()来转化成123,但是别的非数字字符串就不可

更准确来说,它也满足遇强则强的类型强制转换规则,最明显的就是在两个数相除的时候。

同时python也是支持复数运算的一门语言,虚部由一个后缀"j"或者"J"来表示。带有非零实部的复数记为"real+imagj",或者通过complex(real, img)函数创建。记得以前c++中最经典的一些题目就是重载+运算符,使其可以支持复数运算。来看几个例子:

>>> 1j * 1J
(-1+0j)
>>> 1j * complex(0,1)
(-1+0j)
>>> 3+1j*3
(3+3j)
>>> (3+1j)*3
(9+3j)
>>> (1+2j)/(1+1j)
(1.5+0.5j)

假设复数为z,那么它的实部就为z.real 虚部就为z.imag

>>> a=1.5+0.5j
>>> a.real
1.5
>>> a.imag
0.5

注意


不能将复数转化成常用的变量类型。你可以用abs函数取模。



trick:

在shell交互模式下,最近一次的计算结果保存在变量_(下划线)中,这样就可以很方便的进行运算操作。

字符串

python里面有一个string的module,我们先从最基本的开始讲起。
想必你对转义字符并不陌生,在python中也保留了这一转义传统,加入你在字符后面打上\,说明接下来的字符串是\之前的逻辑后缀:

>>>hello = "This is a rather long string containing\n   \several lines of text just as you would do in C.\n\
Note that whitespace at the beginning of the line is
\significant."

print hello

将得到

This is a rather long string containing
several lines of text just as you would do in C.
    Note that whitespace at the beginning of the line   is significant.

那么很明显,‘\n’就是我们熟悉的换行,\是逻辑继续符号。具体的输出格式你需要根据自己的shell跑跑看。

trick:

如果我们创建一个“行”("raw")字符串,\ n序列就不会转为换行,源码中的反斜杠和换行符n都会做为字符串中的数据处理

hello = r"This is a rather long string containing\n\
several lines of text much as you would do in C."

print hello

你将得到:

This is a rather long string containing\n\
several lines of text much as you would do in C.

但是:

r allow \t to be interpreted as the two characters \ and t
也就是说:r‘\t’得到的是\\t

如果你还是嫌太麻烦,那么就用三引号(""")来包裹字符串,这样的话两个三引号之间不需要进行行尾换行处理。


同时,就像你想的那样,字符串可以相加可以乘以一个数字进行成倍的复制,更令人吃惊的时两个字符串的值可以自动的粘黏在一起:

>>>'str''ing'
>>>'string'

但是这个功能仅仅针对字符串常量。






接下来要讲到的一个字符串的功能跟python中的数组有莫大的关联,其实这句话是废话,一般而言字符串也不过就是一个储存在内存中的字符数组,但是我这句话的本意是想表达,python的数组,更严格来讲是list,有一个很强大的功能,那就是切片

初学者可能还无法领会切片使用的奥义,那么我们来举几个例子你就能体会为什么这个功能是很多人选择python的理由。

+---+---+---+---+---+
| H | e | l | p | A |
+---+---+---+---+---+
0   1   2   3   4   5
-5  -4  -3  -2  -1
上图展示了python列表下标的情况,python的list可以进行负索引操作:
>>> word[-1]     # The last character
'A'
>>> word[-2]     # The last-but-one character
'p'
>>> word[-2:]    # The last two characters
'pA'
>>> word[:-2]    # Everything except the last two 
'Hel'


切片操作有一个很有用的不变性:
>>> word[:2] + word[2:]
'HelpA'
>>> word[:3] + word[3:]
'HelpA'

所以现在你回头看看你以前熟悉的那些硬语言,没有哪一种是可以像这样操作数组或者列表的,这样就给数据结构和算法提供的莫大的方便。链表的操作跟上述的操作道理是一样的。这里不赘述了。



下面我们来看看string module

在介绍python中的核心概念module之前,相比你们都尝试过import这个功能,没错,python的强大之处就在于它的第三方包,这些包在python简洁的基础之上又进行了整理,使得语法更加的简单明了,更加地人性化。这里我们以string这个module为例子,介绍一下有关module的使用,希望大家可以举一反三。



无论对于哪一种语言来讲,字符串的操作是重中之重,为此大部分语言都将其作为一个单独的类或者包列出来,提供对字符串操作的方法。python也不例外。

首先打开你的终端(linux用户,windows就cmd吧),分别输入以下命令:
1 python
2 import stirng
3 dir(string)
会出现以下一大坨:

['Formatter', 'Template', '_TemplateMetaclass', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_float', '_idmap', '_idmapL', '_int', '_long', '_multimap', '_re', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'atof', 'atof_error', 'atoi', 'atoi_error', 'atol', 'atol_error', 'capitalize', 'capwords', 'center', 'count', 'digits', 'expandtabs', 'find', 'hexdigits', 'index', 'index_error', 'join', 'joinfields', 'letters', 'ljust', 'lower', 'lowercase', 'lstrip', 'maketrans', 'octdigits', 'printable', 'punctuation', 'replace', 'rfind', 'rindex', 'rjust', 'rsplit', 'rstrip', 'split', 'splitfields', 'strip', 'swapcase', 'translate', 'upper', 'uppercase', 'whitespace', 'zfill']  

这些就是string这个module里面所包含的默认属性以及方法(属于类以级别,可按照java中的类方法理解),那些奇奇怪怪的下划线看不懂不要紧,下一篇文章我会解释。如果想知道其中某个函数比如find的用法,请在终端这么做:help(string.find),那么就会出现:

Help on function find in module string:

find(s, *args)
    find(s, sub [,start [,end]]) -> in

Return the lowest index in s where substring sub is found,
such that sub is contained within s[start,end].  Optional
arguments start and end are interpreted as in slice notation.

Return -1 on failure.
(END) 

它会给你一个抽象方法和一个具体方法,如上,星号看不懂也没有关系,下章会讲,仅仅先当做参数。

注意: 
在终端中,(END)是高亮的,你阅读完了以后,直接按'q',就会返回到>>>提示符,可以继续操作。不然这个既不想vim也不像emacs的东西会搞得你头大。  

那么string中常见的几个函数用法给大家列一下,具体情况具体help

string.atof(s)# Convert to float  
string.atoi(s)# Convert to integer
string.atol(s)# Convert to long
string.count(s,pattern)# Count occurrences of pattern in s
string.find(s,pattern)# Find pattern in s
string.split(s, sep)# String a string
string.join(strlist, sep)  # Join a list of string
string.replace(s,old,new)  # Replace occurrences of old with new

高度预警:
函数'atoi'可以把string类型变量转化为int类型变量,但是仅限于转数字字符串类型

s='string'
s=string.atoi(s)#错误
s = '123'
s=string.atoi(s)#正确

那么第一章就以string module结尾。
未完待续,求打脸,求评论,求口水。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容

  • 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入...
    小小不懂11阅读 3,411评论 2 30
  • 本教程基于Python 3,参考 A Byte of Python v1.92(for Python 3.0) 以...
    yuhuan121阅读 3,047评论 1 6
  • 前言 ||| 第二章 使用ArcPy编写脚本 Python支持大部分在其他语言中出现的编程结构。在本章内容中,我们...
    muyan阅读 90,002评论 10 55
  • 看到几位学员成长视频的亲身感悟,没学之前几乎跟客户谈的是产品如何好,公司如何好,通过上郑老师几节课后深深体...
    九彩阳光阅读 262评论 0 0
  • 都这么晚了,我其实就是想跟你说,原来没什么是绝对不可原谅的,如果你的心还会疼,那就原谅他吧,别跟自个儿过不去了。 ...
    京城兒阅读 188评论 0 0