Hi there! 我是嘟嘟~受到前辈启发,想说可以纪录一下自己练习的过程,小女子为程式超超菜鸟,此系列非教学文,仅为个人解题笔记,可能有错误或未补充详尽之处,欢迎前辈们不吝指教!也欢迎正在自学的伙伴一起讨论学习~
Day 7: Arrays (阵列)
输入格式
第一行输入一整数N代表阵列的数量。
第二行包含N个用空格隔开的整数数字,代表一阵列A。
限制:1 ≦ N ≦ 10001 ≦ A ≦ 10000
输出格式
反转阵列A里的每个元素(in reverse),并以空格隔开后印出。
样本输入
41 4 3 2
样本输出
2 3 4 1
原始格式
import mathimport osimport randomimport reimport sysif __name__ == '__main__': n = int(input()) arr = list(map(int, input().rstrip().split()))
我的解答1
n = int(input())arr = list(map(int, input().rstrip().split()))#对每个输入字串删除末尾空格,以空格隔开,转换成整数型态再以列表储存for i in arr[::-1]: #将列表arr元素反转,并历遍每个元素 print(i,end = ' ') #印出每个元素,并用空格隔开
我的解答2
n = int(input())arr = list(input().rstrip().split()) #与解答1差别在于列表内的元素(数字)仍为字串型态print(' '.join(arr[::-1])) #反转列表arr后,以空格隔开并印出新字串
输入
35833 9919 6731
结果为
6731 9919 5833
补充:
str.rstrip() 可以删除字符串 末尾 的指定字符(默认为空格);
str.split() 可以把字符串以指定字符分隔(默认为空格),返回 列表(list);
map(function,seq) 可以将列表(seq)里的每个元素用函式(function)历遍计算,并返回一个 迭代器;
str.join(seq) 可以将列表(seq)中的字符串元素以指定字符串(str)分隔,返回一个新的 字串(string),注意的是若列表里有非字符串元素(如整数int
),必须先转换成字串str
型态才可以进行join(),否则会出现错误。
错误解法:
print(' '.join(str(arr[::-1])))
结果为
[ 2 , 3 , 4 , 1 ]
因为一但str(arr)后,arr的型态已经不是列表了,此时中括号([])和逗号(,)也转换成字串,join()后会当成字串一起隔开并串接。
如果题目已经给定一个整数元素的列表了,规定要你改成字串后再用join()
串连的话,可以用两种方法:
使用map()
函式
arr = list(map(str, arr))
列表生成式
arr = [str(c) for c in arr]
(感谢前辈补充)
【Python 初学第二讲 — 资料型态与转换】
【python中strip(),lstrip(),rstrip()函数的讲解】
【python入门教室(11) 介绍内建高阶函数- map, filter, reduce】
【Python面试之连接字符串用join还是+】
↑ 比较在串连字符串时,用哪一种方法的性能比较好