首页 > 代码库 > 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元素不可修改/几种迭代