一、Python变量和数据类型
1. print 'a', 'b', 'c' 三个字符串连成一串输出。print遇到逗号则输出空格。
2. 字符串前加上r,如r'\(~_~)/ \(~_~)/',则字符串内的字符不需要转义。但不能表示多行字符串和带有'与"的字符串。
用'''string'''可以表示多行字符串和带有引号的字符串(相当于字符串原样输出,不需要添加转义字符)。
3. 以Unicode表示的字符串(如中文字符)前必须加上u,其他方面和普通字符串一样,比如第2条的方面。如u'中文\n日文\n韩文',ur'''中文"日文"韩文'''
如果中文字符串在Python环境下遇到UnicodeDecodeError,这是因为.py文件保存的格式有问题,可以在第一行添加注释# -*- coding:utf-8 -*-,目的是告诉编译器用utf-8编码读取源代码,然后用Nodepad++另存为以utf-8格式保存。
4. 0、空字符串''和None为False,其他数值和非空字符串为True。
二、List和Tuple类型
1. Python内置数据类型为列表list,list是一个有序集合,也就是其中的元素是按照顺序排列的。例子L = ['Lisa', 95, 'John', 80, 'Alice', '60']
L[-1]表示倒数第一个元素。
2. list添加新元素。L = ['A', 'B', 'C']
L.append('D') #把新元素追加到list末尾
L.insert(0, '#') #把新元素添加到索引位置,原本此位置及后面的元素依次顺移一位
3. L.pop()删除list最后的一个元素,并返回这个元素(输出此元素)
L.pop(2)删除第三个元素
4. 对一个索引赋值可以直接替换此元素。
5. tuple是另一种有序列表,但是一旦创建就不能修改。t = ('A', 'B', 'C'),没有增加修改删除的方式,查询方式与list相同。
6. 创建单元素tuple,t = (1,)需要加一个额外的逗号,否则会产生歧义,输出数字1,因为括号也可以是数学符号。同样Python输出单元素tuple也会自动加一个逗号。
7. tuple内容不变是指tuple元素的指向永远不变,但如果指向一个list,tuple元素的指向仍不变,但list元素的指向可变,则变成了一个内容“可变”的tuple。
三、条件判断和循环
1. 同样的缩进代表一个代码块,使用四个空格缩进。如果在Python交互模式下,要退出缩进还要多加一个回车。
2. if例子
if age >= 18: #有一个冒号
print 'your age is', 18
print 'adult'
print 'END'
if-else例子:
if age >= 18:
print 'adult'
else:
print 'teenager'
if-elseif例子
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
elif age >= 3:
print 'kid'
else:
print 'baby'
3. for循环
for name in L:
print name # name变量是在for循环中定义的。依次取出list中的元素,赋值给name,然后执行for循环体。
4. while循环
while x < 100:
sum += x
x = x + 1
print sum
5. break
while True:
sum += x
x = x + 1
n = n + 1
if n > 20:
break
print sum
四、dict和set类型
1. dict 键值对应,类似json。{}代表一个dict
1)
d = {
'Adam': 95,
'Paul': 80,
'Me': 100
}
len(d) # ==>3
len()函数可以计算任意集合的大小。
2)使用d[key]查找对应的value。
例子:
if 'Paul' in d: #先检查dict中是否有'Paul',防止报错。
print d[Paul]
print d.get['Paul'] #==> d['Paul']
print d.get('bucunzaidekey') #==> None
3)在一个dict中,key不能重复。
key-value的序对没有顺序,打印时不一定是创建时的顺序。
作为key的元素必须不可变,因此不能用list作为key。value是否可变无所谓。
4)更新dict
d['Paul'] = 72 #key不存在则添加,存在则替换。
5)遍历dict
for key in d:
print key+':',d[key]
2. set持有一系列不重复的元素,相当于一个无序的list
1)创建set
s = set(['A', 'B', 'C'])
print s #==> set(['A', 'C', 'B'])
如传入包含相同元素的list,则自动去重
s = set(['A', 'B', 'C', 'C'])
print s #==> set(['A', 'C', 'B'])
print len(s) #==> 3
2)访问set
set是一个无序集合,所以不能用索引访问。访问set相当于判断一个元素是否在set中。
'A' in s #==> True
3)set的特点
set储存的元素必须是不变对象。
set储存的元素是没有顺序的。
使用例子:
weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])
if x in weekdays:
print 'input ok'
else:
print 'input error'
4)遍历set
for name in s:
print name
5)更新set
s.add('Paul') #==> 重复不会报错
s.remove('Paul') #==> 若试图删除不存在的元素,则报错。以此remove前需要先判断。
L = ...
s = ...
for x in L:
if x in s:
s.remove(x)
else:
s.add(x)
五、函数
1. 定义函数
def square_of_sum (L):
sum = 0
for x in L:
sum += x*x
return sum
2. 函数可以返回多个值 return x,y
返回的实际上是一个tuple,若x, y = func () tuple可以自动将值依次赋值给变量。
3. 传入默认参数
def greet(str='world')
print 'hello,',str+'.'
greet()
greet('Paul')
4. 定义可变参数
def average(*args)
return float(sum(args)) and float(sum(args))/len(args)
args是一个tuple。
六、切片
1. 对list进行切片
L[0:3]从索引0开始取到索引3,不包括索引3。如果是从0开始,0可以省略,为L[:3]。
L[:]表示从头取到尾,L[:]实际上复制出了一个新list。
L[::2],第三个参数表示每N个取一个,如例为每两个元素取一个。
把list换成tuple,切片操作完全相同,只是切片结果也变成了tuple。
2. 倒序切片
L[-2:]从倒数第二个元素取到末尾。
L[:-2]从头取到倒数第二个元素。
L[-3:-1]从倒数第三个元素取到倒数第一个元素。
L[-4:-1:2]从倒数第四个元素取到倒数第一个元素,每两个取一个。
print L[4::5][-10:] L[4::5]5的倍数的list,取倒数十个。
3. 对字符串切片
字符串切片方式与list一样,每个字符相当于一个元素。
七、迭代
1. Python中,迭代永远是取出元素本身,而不是元素的索引。
想要在for循环中取到索引,用enumerate()
for index,name in enumerate(L):
print index,'-',name
使用enumerate()函数,可以在for循环中同时绑定索引index和元素name。
实际上,enumerate()函数将['A', 'B', 'C', 'D']变成了[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'D')],因此,每个元素实际上是一个tuple。
因此,索引迭代并不是真的按索引访问,而是有enumerate()函数将每个元素自动变成了(index, element)这样的tuple,再迭代,就获得了索引与元素本身。
2. zip()将两个list合并为一个list,zip([1, 2, 3], ['A', 'B', 'C']) ==> [(1, 'A'), (2, 'B'), (3, 'C')]
range(a, b) 一个从a到b的数字list,range(a, b, 2)生成一个每两个数字显示一个的数字list。
3. 迭代dict的value
1)dict对象有一个values()方法,可以将dict转换为一个包含所有value的list。
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
print d.values()
2)dict对象还有一个itervalues()方法,不是讲dict转换为list,而是在迭代过程中依次从dict中取出value,节省生成list所需要的内存。
4. 迭代dict的key和value
1)items()方法将dict转换为包含tuple的list
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> print d.items()
[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
对此进行迭代,可以同时获得key和value
for key,value in d.items()
print key, ':', value
2)同样,items()也有一个对应的方法iteritems(),不把dict转换为list,而是在迭代过程中不断给出tuple,不占用额外内存。
八、列表生成式
1. [x*x for x in range(1, 10)] 生成一个[1*1, 2*2, ...10*10]的列表。
2. 复杂表达式
['<tr><td>%s</td><td>%s</td></tr>' %(name, score) for name,score in d.iteritems()]
print '<table>'
print '<tr><th>Name</th><th>Score</th></tr>'
print '\n'.join(tds)
print '</table>'
字符串可以通过%进行格式化,用指定的参数替代%s,如果是直接传递参数之类不是添加到字符串中则不需要这样。
字符串的join()方法可以把一个list拼接成一个字符串,用点号前面的内容分隔。
3. 条件过滤
[x*x for x in range(1, 11) if x%2 == 0] 在for循环后还可以加上if来进行筛选。
4. 多层表达式
for循环可以嵌套,因此在列表生成式中,也可以用多层for循环来生成列表。
python空格变逗号 python输出逗号变空格
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Python中这么把逗号转换成空格 python输出逗号变空格
用,去掉额外的换行符
赋值 换行符 序列化 -
python 逗号空格 python逗号转换为空格
python把txt文件中逗号改成空格
python 逗号空格 python txt文件