[自学Python纪录] HackerRank 新手30天挑战-Day07

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还是+】
↑ 比较在串连字符串时,用哪一种方法的性能比较好

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章