1.1.2列表应用

来源:互联网 发布:搜索算法工程师 编辑:程序博客网 时间:2024/05/18 12:34

 

1.内置list方法。

返回一个列表,参数是可迭代对象。里面输出的内容还是保持了传入的可迭代对象的元素和顺序。如果参数为空,则返回一个空的列表

a = "asd"

list(a)

['a', 's', 'd']按顺序传出课迭代的对象

List(43)

TypeError: 'int' object is not iterable

数字是不可迭代的对象所以报错

 

2.xrangerange的具体区别。(现在只有range相当于这里的xrange

 

2.1 xrange的用法:

xrange(开始,结束,步长)

xrange 它生成一个xrange对象。

比如我们

a = xrange(1,10)

print type(a)

print a[0]  为1

 

2.2 比较

range: 直接生成一个列表对象。

xrange: 它是生成一个xrange对象.

 

xrange的用法(现在是range的用法python3

 

1当我们需要操作一个非常大的数据,而且内存比较吃紧的时候,我们可以用xrange来操作省内存。

2xrange一般用在循环里面,比如我们只需要操作部分数据的话,而不是返回全部元素来完成操作,推荐用xrange,效率更高。(用到啥出现啥)

 

比如:

for m in range(1000):

  if m == 10:

 print 'sss'

break

 

 

for m in xrange(1000):    只用判断【0-10】即可  不用把0-100全都罗列出来

 if m == 10:

  print'sss'

break

 

 

3.列表推导式之再应用

3.1 可以做很多例子只要你有想法,例

3.1.2 生成数字    取出1-100的所有值的平方。

[x*x for x in range(100)]  初学可以从何往前写 先写range 再写for x in 然后再写公式x*x

3.1.3 里面生成东西不只是数字。

生成字符串 ['the %s'% d  for d in xrange(10)]   这里%d中的d是传后面的for d 中用的传递 不能再用其他的字母。

生成元组 [(x,y) for x in range(2)for y in range(2)]  这里是先取x第一个数和y所有的组合 然后在取x第二个数组合 直到全部取完。

生成字典 

举例dict([(x,y) for x in range(3) for y in range(2)])

{0: 1, 1: 1, 2: 1}  若相同的话则覆盖了 所以(0,0)和(0,1)都用0:1表示
意思是能生成 0:0,01,1:0,11,2:0,21

在后面的把前面的覆盖了因为字典只能有一个要么0:0 要么0:1 后面的0:1把0:0覆盖了所以显示出来的只有0:1.

4 翻来覆去之再谈引用

a = ['i','am','lilei']

b = a

a[2] = 'laowang'

print b

这里b的值是['i','am',laowang']

  a b 地址是相同的

del b

a a是['i','am',laowang']  但是 此时引用

5 小技巧之再议删除、

a = []

1 del a 删除列表对象的引用

2 dela[:] 清空列表对象里的元素

 

例子如下a=[1,2,3]

b=a

del b

NameError: name 'b' is not defined

因为删除了b的对象引用所以b就相当于还没有赋值则出现了错误  减少了ba的引用,所以出现错误

(引用过的,赋值以后的在删除没用除非整个都删除就像b整个的都删去了)

a = [1,2,3]

b = a[:]

del a

[1, 2, 3]

虽然删去了a但是b已经赋值了所以再删无效

 

若del b[:]则删除了里面的元素不管是之前的还是被赋值的。

 

 

重点补充

比如一个元组a=(1,23,4)

            list(a)只是把类型改成了list  但是a的值还是元组

            若想把a的值也是列表则需要重新赋值 a=list(a)即可