注意:对于我这个以前用c/c++的同学来说,可能一开始学习pyhon时有点不适应的,为什么呢?因为吧,python中,没有这玩意:{},也不用每句话才用分号分开的。python中通过缩进来分块的,一行占个句话就可以啦。下面的学习基于python2.7

from __future__import division

开始啦,边学习边作笔记

参考http://www.liaoxuefeng.com/,另外,还有其它的一些资料。

基本输入输出语句print和raw_input():

#输入语句:
>>> print'100+100=%d' %(100+100)
100+100=200 #输出语句
>>> name = raw_input('input your name:')
input your name:yinheyi
>>> print('hello,%s' %name)
hello,yinheyi

注意:raw_input()语句接收以后,默认保存为str格式哦,如果要比较大小的话,记得转为int类型。

>>> number = raw_input('input a number:')
input a number:12
>>> type(number)
<type 'str'>
>>> number = int(raw_input('input a number:'))
input a number:12
>>> type(number)
<type 'int'>

判断与循环语句:

判断语句:if…elif…else

>>> if a>= 50:
... print 'the number is big'
... elif a < 50:
... print'the number is small'
... else:
... print "i don't know"
...
the number is big

循环语句: for…in

>>> sum = 0
>>> for number in range(101):
... sum = sum + number
...
>>> print sum
5050

循环语句: while

>>> sum = 0
>>> n = 1
>>> while n < 101:
... sum = sum + n
... n = n + 1
...
>>> print sum
5050

数据类型:列表、元组、字典、set

list: Python内置的一种数据类型是列表。lists是一个有序的集合,可以添加与删除元素。

生成它是用  []  就可以啦;

调用它时,用下标调用就可以啦(从0开始);如第一个元素,list[0];倒数第一个,list[-1];

可以用len()函数获得list元素的个数;

在尾部添加用append(), 中间插入用insert();尾部删除用pop();指定位置删除为pop(i);

#定义一个friends的列表
>>> friends = ['xiaoming','ergou','sanmao']
>>> friends
['xiaoming', 'ergou', 'sanmao']
>>> friends[0]
'xiaoming'
>>> friends[-1]
'sanmao' #添加与删除
>>> friends.append('dapeng')
>>> friends
['xiaoming', 'ergou', 'sanmao', 'dapeng']
>>> friends.insert(0,'diyi')
>>> friends
['diyi', 'xiaoming', 'ergou', 'sanmao', 'dapeng'] >>> friends.pop()
'dapeng'
>>> friends
['diyi', 'xiaoming', 'ergou', 'sanmao']
>>> friends.pop(2)
'ergou'
>>> friends
['diyi', 'xiaoming', 'sanmao'] #替换
>>> friends[0] = 'wangbadan'
>>> friends
['wangbadan', 'xiaoming', 'sanmao']

元组(tuple):tuple和list非常类似,但是tuple一旦初始化就不能修改。只要记住它不能修改就可以啦。很安全。

用 () 定义啊。

用下标调用,即tuple[1];

注意:它定义一个元素的tuple时,一定要这样写,如:name = (‘yin’,), 千万别写成 name = (‘yin’);

name = ('zhai','yin')
>>> name
('zhai', 'yin')
>>> name[0]
'zhai'
>>> name[-1]
'yin'

字典(dictionary):它就是键-值对。如在C++语言中为map的容器。它的特点就是可以快速查找,需要占用大量的内存,内存浪费多。通过key计算位置的算法称为哈希算法(Hash)。

用 {} 定义dictionary哦;

随着dictionary的增加,查找时间不会增加的。

多次对一个key放入value,后面的值会把前面的值冲掉:

可以用  ‘key’in dic 或 dic.get(‘key’)的方法来查看key是否存在。注意:dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value,返回None的时候Python的交互式命令行不显示结果。

删除用: pop(key)。添加时,直接用key值的索引添加就可以的。

注意:ict内部存放的顺序和key放入的顺序是没有关系的。

#定义一个dictionary;
score = {'xiaoming':85,'xiaohong':62}
>>> score
{'xiaoming': 85, 'xiaohong': 62} #添加一个元素;
>>> score['wangdan'] = 85
>>> score
{'xiaoming': 85, 'xiaohong': 62, 'wangdan': 85} #删除一个元素;
>>> score.pop('xiaohong')
62
>>> score
{'xiaoming': 85, 'wangdan': 85} #查看key是否存在;
>>> 'xiaoming' in score
True #查看一个key对应的值;
>>> score.get('wangdan')
不存在时,返回一个自定义的值;
85>>> score.get('hehehe',-1)
-1

set:set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象。

要创建一个set,需要提供一个list作为输入集合:

通过add(key)与remove(key)添加与删除元素;

>>> s = set([1, 2, 3])
>>> s
set([1, 2, 3])

注意,传入的参数[1, 2, 3]是一个list,而显示的set([1, 2, 3])只是告诉你这个set内部有1,2,3这3个元素,显示的[]不表示这是一个list。

重复元素在set中自动被过滤:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
set([1, 2, 3])

添加与删除

>>> s = set([1,2,3])
>>> s
set([1, 2, 3])
>>> s.add('xiaoming')
>>> s
set([1, 2, 3, 'xiaoming'])
>>> s.add(0)
>>> s
set([0, 1, 2, 3, 'xiaoming'])
>>> s.remove(2)
>>> s
set([0, 1, 3, 'xiaoming'])

一些高级操作:

对于list与tuple的切片操作:

如list[:5]或list[0:5]表示第0,1,2,3,4个索引值;当然也可以为负的如,list[-2:0]等于list[-2:]即倒数第2、倒数第1个数;也可以跳着来哦:list[1:10:2],表示步长为2的。

list=range(100)
#正着切片
>>> list[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#负索引切片
list[-10:]
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
#倒着切片
>>> list[10:0:-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> list[-1:-10:-1]
[99, 98, 97, 96, 95, 94, 93, 92, 91]
#跳着切片
>>> list[::10]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
#tuple的切片
>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)
#字符串的切片
>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'

它的迭代:

对于list、tuple还有字符串都可以用 for…in 进行迭代哦;

而对于dictionary的话,也可以哦,只不过默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(),如果要同时迭代key和value,可以用for k, v in d.iteritems()

那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

另外:Python内置的enumerate函数可以把一个list、tuple、字符串本身变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False

列表生成式:很牛逼很方便的;它是用来创建list的生成式;我们举例子看看哈:

生成1-10的list:

>>> range(1,11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

生成 12、22、……102的list:

>>> list = [x*x for x in range(1,11)]
>>> list
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

还可以再选择一下哦:

>>> [x * x for x in range(1, 11)if x % 2 == 0]
[4, 16, 36, 64, 100]

还可以两层循环的:

>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

生成器:

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

创建方法1:第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x104feab40>

可以通过generator的.next()方法打印出来数据,另外也可以通过迭代哦,基本上我们都选择for…in迭代方法。

创建方法2:通过特殊函数创建:如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。

#这是函数,输出斐波那契数列
def fib(max):
n, a, b = 0, 0, 1
while n < max:
print b
a, b = b, a + b
n = n + 1 #这是generator,也是生成斐波那契数列;
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1

注意:这里,最难理解的就是generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。

>>> def odd():
... print 'step 1'
... yield 1
... print 'step 2'
... yield 3
... print 'step 3'
... yield 5
...
>>> o = odd()
>>> o.next()
step 1
1
>>> o.next()
step 2
3
>>> o.next()
step 3
5
>>> o.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration

最后,如果你觉得以上内容对你有帮助,作为回报,那就可以打赏一下我这个穷学生吧,以资助我买几本书。

钱也不用太多,您可以选择:2毛,5毛、1元。

如果对你没有帮助,那就算了。

python中的最最最基本语法(1)的更多相关文章

  1. 总结了Python中的22个基本语法

    "人生苦短,我用Python".Python编程语言是最容易学习.并且功能强大的语言.只需会微信聊天.懂一点英文单词即可学会Python编程语言.但是很多人声称自己精通Python ...

  2. Python中比较运算符连用的语法规则

    在Python中,比较运用符<.>.<=.>=.== .!=可以连用,但语法规则和其它编程语言不一样 以 == 为例,具体语法规则是: a == b == c == d 等价于 ...

  3. 【循序渐进学Python】4. Python中的序列——字典

    字典是Python内建的六种序列之一.字典作为一种常用的数据结构,字典中的值没有特定顺序,每个值都对应于一个唯一的键.键可以是数字.字符串甚至是元组. 1. 创建和使用字典 Python中字典可以使用 ...

  4. Python中利用函数装饰器实现备忘功能

    Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   " ...

  5. Python中变量和常量的理解

    一.变量的定义:把程序运算的中间结果临时存到内存里,以备后面的代码继续调用,这几个名字的学名就叫做"变量". 二.变量的作用:变量用于存储要在计算机程序中引用和操作的信息.它提供了 ...

  6. python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)

    转载:http://python.jobbole.com/81683/ 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需 ...

  7. Python中的变量和常量

    本文主要介绍Python中的变量和常量,包括变量的命名规范,使用注意事项 -------------- 完美的分割线 --------------- 1.变量 1.1.变量理解 1)什么是变量 变量即 ...

  8. Python中装饰器(转)

    本文由 伯乐在线 - 7even 翻译,艾凌风 校稿.未经许可,禁止转载!英文出处:Simeon Franklin.欢迎加入翻译组. 好吧,我标题党了.作为 Python 教师,我发现理解装饰器是学生 ...

  9. Python中的Comprehensions和Generations

    Python中的Comprehensions和Generations语法都是用来迭代的.Comprehensions语法可用于list,set,dictionary上,而Generations语法分为 ...

随机推荐

  1. 不定参数的传递VA_LIST的用法

    VA_LIST的用法:(1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针: (2)然后用VA_START宏初始化变量刚定义的VA_LIST变量,使其指向第一个可 变参数的地址: ...

  2. 每日一九度之 题目1039:Zero-complexity Transposition

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3372 解决:1392 题目描述: You are given a sequence of integer numbers. Zero-co ...

  3. EffectiveJava笔记(第一部分)

    考虑用静态构造方法代替构造器的好处: 1.静态构造方法有名字     BigInteger.probablePrime(int, int, Random)比 new BigInteger(int, i ...

  4. 类型解释器——C专家编程读书笔记

    对于声明,应该按下面的步骤来进行解释: 1) 声明从它的名字开始读取,然后按照优先级顺序依次读取 2) 优先级顺序 a) 括号括起来的部分 b) 后缀操作符,()表示函数,[]表示数组 c) 前缀操作 ...

  5. 关于List.ToArray()方法的效率测试

    之前一直认为因为List内部是数组,ToArray的实现只是将数组返回出去而已. 今天测了一下发现并不是那样 var a = new List<int>(); ; i < ; i++ ...

  6. JAVA基础知识之多线程——控制线程

    join线程 在某个线程中调用其他线程的join()方法,就会使当前线程进入阻塞状态,直到被join线程执行完为止.join方法类似于wait, 通常会在主线程中调用别的线程的join方法,这样可以保 ...

  7. HDU(1853),最小权匹配,KM

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853 Cyclic Tour Time Limit: 1000/1000 MS (Java/Other ...

  8. 单片机C语言开发学习笔记---动态的数码管

    在郭天祥的那本书中,有一个通过按键控制数码管的例子,在运行这个例子的时候,我发现当按键按下的时候,第一位数码管会熄掉,这是为什么呢? 后来在网上找到了原因,当我按下按键不松开的时候,接下来要运行的代码 ...

  9. 公共控件Listview

    ListView属性中,Items是行的总集合,Items集合中的每一个是一行,Items集合里面有ListViewItem集合,这个集合实例化:ListViewItem li=new ListVie ...

  10. 电脑能上网,手机连上wifi不能上网

    电脑能上网,手机连上wifi不能上网  ,其实只要把手机的dhcp 改为我们熟悉的就行了 我此处就设置为114.114.114.114