首页 > 代码库 > 20161213py学习笔记:string元素不可修改/几种迭代
20161213py学习笔记:string元素不可修改/几种迭代
1、字符串中的元素是不可修改的
strings=‘andasfefanagrgihaigahairt‘
for index,string in enumerate(strings):
#print index,string
if string==‘a‘:
strings[index]=‘w‘
print strings
这段代码运行时,会出现:
strings[index]=‘w‘
TypeError: ‘str‘ object does not support item assignment
的报错提示,原因在于strings[index]=‘w‘这步是错的,字符串内的元素是不可修改的。
那如何把strings中所有的‘a’替换成‘w’呢?
strings=‘andasfefanagrgihaigahairt‘
lst=[] #split分不开,认为是1个函数;所以用for遍历,把strings转化成单个字母组成的list
for i in strings:
lst.append(i)
for index,string in enumerate(lst):#现在问题就变成了如何修改list的元素,直接让i=‘w’是错的,没这种方法,要用list[i]=*
if string==‘a‘:
lst[index]=‘w‘
strings=‘‘.join(lst)#把list转化为string,并赋值为strings
print strings
note:我从始至终其实并没有改变代码开头的strings,我只不过是再造了一个一模一样的strings。他们的id是不同的。
2、print中‘+’的作用
在print ......,我一直觉得‘+’等价于‘,’,其实并非这样。
‘+’,让...,....前后两部分无空格衔接
‘,’,使得...,...前后两部分衔接的地方会多出1个空格
3、序列解包
a 输入:>>>1,2,3
实际等于输入:(1,2,3)
所以:
x,y=y,x
即:
(x,y)=(y,x)
b for key,value in dict.items():
这个式子中的key,value就是序列解包的应用。
4、is、=、==
is是用来检测2个名称是不是同一个id
=,是用来赋值的,可以检测2个名字所代表的名称是否相等
==,是来表示运算中相等的
5、assert断言
assert作为调试程序的一种方法,assert......,string.
后面这个string是可以自己加的,这样就可以在报错时便于发现哪里出问题了。
6、迭代
就是循环的另一种说法而已,无论是looper还是iter,都是循环往复,重复重复再重复的意思。
7、几种迭代的方法
xrange是可迭代的,也就是用到几个生成几个,运行速度比range快。
8、while、for
多用for,少用while。break用的比较多。
9、list comprehension,列表推导式。
一般是[........],也可以(......)
10、垃圾回收器
在python中,是无法删除值的。我们删除的是赋予值的名称,然后python的内部程序会把这些无法再使用的值自动删除。
11、exec和eval
exec是执行语句的函数,eval是求值的函数
20161213py学习笔记:string元素不可修改/几种迭代