Python 列表list小总结 包含字符串笛卡尔积,九九乘法表

列表

概念及定义:可以存放不同的数据类型的集合,这一点是与C语言数组不同之处,C语言数组只能存放同种类型的数据。

list = ["abc",'123',False,{"abc","123"},1,2,3,["abc","123"]],可以存放 字符串,布尔,列表,集合,列表...

生成方式:

一、列表生成式

nums = range(strat,stop-1,step)

eg:生成1-99的奇数列表 以及生成99-1的奇数列表

# #0-99的list
nums = range(100)
print (range(1,100,2))
print(range(99,1,-2))

二、列表推导式

其思想是映射,就像数学里的函数,y= x^2之类的。还可以在原来列表基础上进行筛选过滤。

resultList = [表达式 for 变量 in 列表 if条件]

nums = [1,2,3,4,5]
resultList = [num **2 for num in nums if num % 2 != 0]
print resultList

用循环写九九乘法表

 for num in range(1,10):
     for n in range(1,num+1):
         print("%d * %d = %d"%(n,num,n*num)),
     print("")

 用列表和循环写:

print('\n'.join(['\t'.join(['%d * %d = %d'%(num,n,num*n) for n in range(1,num + 1)]) for num in range(1,10)]))

用一行代码实现两个字符串的笛卡尔积组合

print( [x + y for x in "lxm" for y in "dl"])

 这两个代码的运行结果

 list相关操作:

增加

list.append(object) 

append  在列表最后追加一个新元素  返回值是None,会直接修改列表

list.insert(self,index,object) 会直接修改列表,插入的值在索引值前面,其余的值往后移

list.extend(iterable) 作用:往列表里直接扩展可迭代序列,返回值为None,会直接修改原列表。它与append的区别,可以理解我两个列表的拼接。把元素都分解开,往原list里添加。

删除

del 指定元素 可以删除某个元素,删除整个列表

list.pop(index = -1) 返回值是删除的元素,会直接修改原列表。注意越界!

list.remove(object) 返回值是None,会直接修改原列表,如果元素不存在,会直接报错,如果有多个元素,只删除最左边的一个。

修改

list[index] = object 注意越界。这个与字符串也不同,字符串虽然也可以用索引找到某个字符,但不可以修改。

查询

items[index] 获取单个元素, 注意索引正负。

index() 获取元素索引

idx = index(object,start,end) 这个可以与修改一起使用,如果列表里有许多一个的数字,它只找到最左边的。

list.count(object) 获取指定元素的个数

list.items[start:end:step]获取多个元素,也叫切片

遍历

1、根据元素遍历

for item in list:

print(item)

2、根据索引进行遍历

for index in range(len(list))

print(index,list[index])

首先要有一个索引列表 indexs = range(len(list)),然后在遍历整个索引列表,每个索引对应一个指定的元素。

3、通过枚举函数,生成一个新的枚举对象,主要用于将一个可遍历的数据同时列出数据下标和数据。

enumerate()

首先要根据列表创建一个枚举对象enumerate(list)再遍历整个枚举对象(枚举对象可以直接被遍历)

for idx,val in enumerate(list,1):索引值一般从0开始,如果想要从1开始,就跟写的一样

4、用迭代器

怎样判定一个对象是否是可迭代对象 方法:

import collections

instance(obj,collections.Iterable)

迭代器:是可以遍历位置的对象,从第一个元素开始,往后通过next()函数,进行遍历,只能往后,不能往前。判定依据:作用于next()函数。它本身也是一个可迭代对象。这说明可迭代器与可迭代对象是不一样的。判断方法:

import collections

instance(obj,collections.Iterator)

可以用iter()函数将一个可迭代对象转换为迭代器

那既然迭代器也是可迭代对象,也可以作用于for in 那为什么要用它了?理由1:仅仅在迭代到某个元素的时候才处理元素,2,提供了一个统一的访问集合的接口。

步骤:首先创建一个迭代器对象

l = [1,2,3,4]

it = iter(l)

for v in it:

print(v)

迭代器一般不能多次迭代,如果用next()的话,再取出完毕后会再继续取 报错

用 for in会自动处理迭代完毕的错误

猜你喜欢

转载自blog.csdn.net/qq_38513966/article/details/81202802
今日推荐