由于最近公司有python项目维护,因此把python的基础入门的书整理一遍,由于有些忘记了,同时在看<<python编程>>这本书的时候以为对有基础的有不少的赘余,打算直接整理不一样之处。java
由于python 有2版本和3版本,若是新学的话,建议直接3版本,2版本已经不会再升级了,也就是再也不维护了。python
同时也规劝一句,若是是用python专门去作网站的话,那么是不建议的,由于这不是python的强项。同时也不要误觉得python动态语言性能效率就不适合作一些服务,由于有些服务性能不是一个瓶颈,可能问题在网络一头等。编程
总之一句话,py发展这么快,一个是由于社区,同时也是由于python这门语言的设计上,那么就先来看下列表吧,由于太经常使用了。噢,若是你还不会装python,那么直接百度吧,建议一开始直接exe安装。c#
在此以前呢,先介绍一个string类型,由于strign类型的介绍很简短,那么就直接放到这一小节中。数组
name="jack rose"; print(name.title())
那么它会输出,Jack Rose,这个title就是用来首字母大写的。网络
看下c# 的首字母大写:Strings.StrConv("str.str.str str_str", VbStrConv.ProperCase, System.Globalization.CultureInfo.CurrentCulture.LCID);app
是的,python就是这么方便,操做数据的方便,后面你能更加感觉到。函数
name="jack rose"; str1=name+1+"2"; print(name.title())
可是依然有值得注意的地方,在其余高级语言如python和java中是没得问题的,可是在py中是存在问题的。性能
Traceback (most recent call last): File "index.py", line 2, in <module> str1=name+1+"2"; TypeError: cannot concatenate 'str' and 'int' objects
为何不会自动转换呢?他们两个对象不同,那么就会失败,为啥会这样呢?这个是涉及问题,来看下int 若是转换为str的。网站
a=str(1) print(a)
和其余语言不同,其余语言有tostring,那么转换的时候就会调用tostring,而py中,是一个str函数,设计的不一样意味着他们的写法不一样。
看下其余几个简单的。
name=" jack rose "; print(name.lstrip())
lstrip 是去除左边的空格,而后rstrip 去除右边的空格。在此说明的不是说lstrip这个函数,而是想说明,py有不少函数分为左右,若是你发现一个函数有从左查询,那么必定有一个从右查询,这就是为啥py这么方便,由于提供了太多函数。
是的,它的语义化,让你不须要去寻找哪一个函数干什么的,从英文中就能推断出。string 到此就结束了,那么看到下本章的主要,列表。
首先python没有数组,一门动态语言要啥数组呢?来看看其操做方便的列表。
name=" jack rose "; list=['a','b','c'] print(list);
输出:['a','b','c'],好吧这里可能有人疑问这为啥不是数组呢?你能够理解为这是一种语法。
为了证实其不是一个string数组:
list=['a','b','c'] list.append(1); print(list);
输出:['a', 'b', 'c', 1]
好的上述你看到了添加,那么看下插入吧。
list=['a','b','c'] list.append(1); list.insert(0,1); print(list);
输出:[1, 'a', 'b', 'c', 1]
它的规则也很简单,就是在当前位置写入,其余的位置日后移动。
在此说明一点,咱们能够像索引同样去访问列表。
list=['a','b','c'] print(list[0]);
输出a。除了这样,咱们还能够list[-1],将会返回'c',而不是异常,这让咱们的计算方便不少,咱们不须要去计算最后一个位置的位置。
看下删除:
list=['a','b','c'] del list[0] print(list);
输出:['b', 'c']
在这里说明一下,不只是列表这样删除,其余的类型也是这样删除的。
a='a'; del a; print(a);
是的,这样就没有a了。
Traceback (most recent call last): File "index.py", line 5, in <module> print(a); NameError: name 'a' is not defined
这样说吧,a并无删除,只是删除了a和'a'的联系,就想指针指向同样。
指定位置弹出:
list=['a','b','c'] list.pop(); print(list);
返回:[a,b]
那么默认是弹出最后一个位置,若是指定位置的话,好比说第一个,那么pop(0)便可。
那么如何根据值来删除呢?
list=['a','b','c','a'] list.remove('a'); print(list);
输出值:['b', 'c', 'a']
能够看到值删除了一个,那么若是所有删除呢?这个后面系列将会介绍到,也许你如今能够想象遍历一下。对了有一个函数count,list.count('a')会计算a出现的次数,而正在的计算list大小,是经过len,这个函数,如len(list)
在咱们编程中排序时少不了的,有临时排序还有永久排序。临时排序就是返回一个新的list,永久就是直接修改list,他们分别对应的函数是:
list=['b','c','d','a'] print(sorted(list)); print(list); list.sort(); print(list);
输出:
['a', 'b', 'c', 'd'] ['b', 'c', 'd', 'a'] ['a', 'b', 'c', 'd']
在此你能够知道sorted 是临时排序,sort 是永久排序,值得总结的是:通常来讲自身函数的调用是永久操做本身,而外部会创造另外一个对象。
再举另一个例子:reverse,list.reverse是操做本身,而不是返回一个新对象,reversed(list);返回一个新对象。
list=['b','c','d','a'] for item in list: print(item)
循环很是的简单,可是值得注意的是list后面须要又要给:,这是须要注意的语法。
一样须要介绍另一个东西,pass.
假如咱们for语句什么都不作,好的,不要纠结为啥什么都不作。
那么能够这样:
list=['b','c','d','a'] for item in list: pass
若是没有pass,那么将会报错,pass 是占位语句。
前面介绍到,py操做数据是真的方便,那么若是要生成一些数据是否一样方便?
for item in range(0,10):
print(item);
输出:
0 1 2 3 4 5 6 7 8 9
这样就生成了0-9。前开后闭类型的。
一样你能够跳过一些:
for item in range(0,10,2): print(item);
0 2 4 6 8
一样能够进行一些统计:
list=range(0,10,2); print(min(list)); print(max(list)); print(sum(list));
获得0,8,20。
给各位介绍一个神器的语法,好比你想要上面的list增长1,而后赋值给一个新的list,那么怎么写呢?
list=range(0,10,2); list2=[item++1 for item in list] print(list2);
这样就是:[1, 3, 5, 7, 9]
这里我写的是item++1,这和咱们c# item++同样,语法不通而已。
那么若是我要复制一个list怎么办呢?
list=range(0,10,2); list2=list[:] print(list2);
这样就行。[:]是否只能用来copy呢?固然不是,它是片切的一种语法。
list=range(0,10,2); print(list); list2=list[1:2] print(list2);
输出:
[0, 2, 4, 6, 8] [2]
获取从1开始,到2介绍,且不包含2。
仍是前开后闭原则。
除了能够填写正数,你还能够填写负数:
list=range(0,10,2); print(list); list2=list[-1:] print(list2);
相信也猜到了,没错就是获取最后一个。
若是你但愿你定下的一些数据被修改,那么你可使用元组。
tuple=(100,200)
这样就建立了一个元组,是的,把一些数据放在括号中。
元组通常用于查询,他的函数也很是少。
下一节 基本操做。