Python入门100个实例(34)——列表推导式的应用

从本例学到什么

  1. 列表推导式用于输入整数列表。
  2. 列表推导式用于转换列表中各个元素的数据类型。

实例程序

题目描述

将数组中的数逆序存放
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。

输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。

输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。

输入样例:
4
10 8 1 2

输出样例:
2 1 8 10

上述题目的参考答案

n = int(input())
ns = [int(s) for s in input().split()]  #用列表推导式读入整数列表
ns_str = [str(ri) for ri in ns[::-1]]  #用列表推导式把整数列表转换为字符串列表
print(' '.join(ns_str))  #调用字符串对象的join方法,合并字符串列表,列表元素之间用空格间隔

知识点讲解

  1. 列表推导式的写法: [表达式 for 变量 in 列表] 。这里,for和in是固定不变的。

  2. 上一节给出的代码中的第2行的执行过程是:
    (1)执行input()读入一行内容。
    (2)执行split()方法,作用是以空格作为分割符,把读入的一行内容切分成多个数字串,生成数字串列表。把数字串列表记作n_strs。至此,第2行代码等同于: ns = [int(s) for s in n_strs] 。
    (3)执行列表推导式[int(s) for s in n_strs],生成结果列表。以上一节给出的输入样例为例,具体的步骤是:
    (3-1) 变量s赋值为n_strs的第1个元素,即’10’,接着执行int(‘10’),得到整数10,加入结果列表。一开始,结果列表为空列表。"(3-1)"这一步执行后,结果列表为[10]。
    (3-2)变量s赋值为n_strs的第2个元素,即’8’,接着执行int(‘8’),得到整数8,加入结果列表。这一步执行后,结果列表为[10, 8]。
    (3-3)变量s赋值为n_strs的第3个元素,即’1’,接着执行int(‘1’),得到整数1,加入结果列表。这一步执行后,结果列表为[10, 8, 1]。
    (3-4)变量s赋值为n_strs的第4个元素,即’2’,接着执行int(‘2’),得到整数2,加入结果列表。这一步执行后,结果列表为[10, 8, 1, 2]。
    (4)结果列表赋值给ns。

  3. 上一节给出的代码中的第3行的执行过程是:
    (1)执行ns[::-1],得到列表ns的逆序列表r_ns。于是,第3行代码等同于:ns_str=[str(ri) for ri in r_ns] 。
    (2)执行列表推导式[str(ri) for ri in r_ns],生成结果列表。以r_ns为[2, 1, 8, 10]为例,具体步骤是:
    (2-1)变量ri赋值为r_ns的第1个元素,即2,接着执行str(2),得到字符串’2’,加入结果列表。一开始,结果列表为空列表。这一步执行后,结果列表为[‘2’]。
    (2-2)变量ri赋值为r_ns的第2个元素,即1,接着执行str(1),得到字符串’1’,加入结果列表。这一步执行后,结果列表为[‘2’, ‘1’]。
    (2-3)变量ri赋值为r_ns的第3个元素,即8,接着执行str(8),得到字符串’8’,加入结果列表。这一步执行后,结果列表为[‘2’, ‘1’, ‘8’]。
    (2-4)变量ri赋值为r_ns的第4个元素,即10,接着执行str(10),得到字符串’10’,加入结果列表。这一步执行后,结果列表为[‘2’, ‘1’, ‘8’, ‘10’]。
    (3)结果列表赋值给ns_str。

  4. 把整数列表转换为字符串列表的原由是,字符串的join方法要求参数是字符串列表。’ ‘.join(字符串列表) 的作用是把字符串列表内的元素合并成一个字符串,元素之间用空格间隔。如果是’#’.join(字符串列表),那么元素之间用#号间隔。

小结

  1. 从一个列表导出另一个列表,通常可以运用列表推导式。
  2. 从写法和执行过程两方面来理解列表推导式。平时多运用,就会彻底掌握了。
  3. 列表推导式缩短代码的利器。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章