010 Python语法之二维列表-迭代器生成器
2017-07-07 17:37
453 查看
简书地址:http://www.jianshu.com/p/54dce4ff2904
二维列表
list1 = [[1,2,3], [4,5,6], [7,8,9]]
二维列表的遍历
第一种方式
list1 = [[1,2,3], [4,5,6], [7,8,9]] for i in list1: print(i)
第二种方式
for i in range(0, len(list1)): print(list1[i])
二维列表求和(我做成了同一个函数求出这些和)
求二维列表每一行的和
求二维列表每一列的和
求二维列表总和
数据: 1, 2, 3, 4, 1, 2, 3, 5 1, 2, 3, 4 1, 2, 3, 4, 5 1, 2, 3, 4, 10 def getListSum(list1): sum1, sum2, sum3 = 0, [], [] # sum1为总和,sum2为每一行的和,sum3为每一列的和 for x, i in zip(list1, range(0, len(list1))): # 拿到二维列表每个元素(一维列表),元素个数 sum2.append(0) for y, j in zip(x, range(0, len(x))): # 拿到二维列表每个元素(列表)内的每个元素(也就是具体的数字),元素个数 sum1 += y # 每一个元素求和 sum2[i] += y # 每一行的和 if j >= len(sum3): sum3.append(0) sum3[j] += y # 每一列的和 return sum1, sum2, sum3 list1 = [[1, 2, 3, 4, 1, 2, 3, 5], [1, 2, 3, 4], [1, 2, 3, 4, 5], [1, 2, 3, 4, 10]] s1, s2, s3 = getListSum(list1) print("总和:", s1) print("每一行的和", s2) print("每一列的和", s3) 打印: 总和: 66 每一行的和 [21, 10, 15, 20] 每一列的和 [4, 8, 12, 16, 16, 2, 3, 5]
将二维列表的处理封装成一个类
class DealUtils: def __init__(self, list1): self.list1 = list1 def getListSum(self): sum1, sum2, sum3 = 0, [], [] # sum1为总和,sum2为每一行的和,sum3为每一列的和 for x, i in zip(self.list1, range(0, len(self.list1))): # 拿到二维列表每个元素(一维列表),元素个数 sum2.append(0) for y, j in zip(x, range(0, len(x))): # 拿到二维列表每个元素(列表)内的每个元素(也就是具体的数字),元素个数 sum1 += y # 每一个元素求和 sum2[i] += y # 每一行的和 if j >= len(sum3): sum3.append(0) sum3[j] += y # 每一列的和 return sum1, sum2, sum3 list1 = [[1, 2, 3, 4, 1, 2, 3, 5], [1, 2, 3, 4], [1, 2, 3, 4, 5], [1, 2, 3, 4, 10]] dealListUtils = DealUtils(list1) s1, s2, s3 = dealListUtils.getListSum() print("总和:", s1) print("每一行的和", s2) print("每一列的和", s3)
迭代器(iter(序列))
list1 = [1, 2, 3, 4] it = iter(list1) print(next(it))
next(迭代器)
迭代只能从前往后遍历方法1
list1 = [1, 2, 3, 4] it = iter(list1) for i in it: print(i)
遍历方法2
list1 = [1, 2, 3, 4] it = iter(list1) while True: try: print(next(it)) except StopIteration: break
生成器
关键字yield
def gen(): print("num1") yield 1 print("num2") yield 2 print("num3") yield 3 gens = gen() # 这个gens就相当于iter(序列)后的it实例,遍历方式一样
列表推导式
a = [i for i in range(100) if not(i%2) and i % 3]
生成器推导式
d = (i for i in range(100)) 可以用next迭代 也可以用for迭代 for each in d: print(each)
总结
二维列表和Java中的二维数组是一个概念,只不过列表存储的是任意类型数据。
相关文章推荐
- Python(迭代、三元表达式、列表生成、生成器、迭代器)
- 零基础学python-19.8 生成器表达式:当迭代器遇上列表解析
- python3基础: 元组tuple、 列表list、 字典dict、集合set。 迭代器、生成器
- python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)
- 初学Python——列表生成式、生成器和迭代器
- 零基础学python-19.8 生成器表达式:当迭代器遇上列表解析
- python切片、迭代、列表生成器、生成器、迭代器
- 零基础学python-19.8 生成器表达式:当迭代器遇上列表解析
- Python基础(8)_迭代器、生成器、列表解析
- python拗口语法点总计1:迭代器、生成器、元组
- Python语法实践之初探列表推导与生成器
- Python day5:列表生成式,生成器,迭代器
- Python3中的列表生成式、生成器与迭代器实例详解
- Python 生成器函数,生成器表达式,迭代器,列表解析
- python的高级特性:切片,迭代,列表生成式,生成器,迭代器
- python3 列表生成式、生成器、迭代器
- 举例讲解Python中的迭代器、生成器与列表解析用法
- python--迭代器,生成器,三元表达式,列表解析,生成器表达式
- Python之列表生成式、生成器、可迭代对象与迭代器
- python: 切片,迭代,列表生成器,生成器,迭代器