有数组[1,2,3,7,9,10,11,16]
请问如何快速优雅的获取到.1-3,7,9-11,16
这样的结果呢?
采用HttpClient向服务器端action请求数据,当然调用服务器端方法获取数据并不止这一种。WebService也可以为我们提供所需数据,那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合到一起。 实现Android与服务器端数据交互,我们在PC机器java客户端中,需要一些库,比如XFire,Axis2,CXF等等来支持访问WebService,但是这些库并不适合我们资源有限的android手机客户端,
我想这是 先对数组sort 之后循环判断当前值是否是上一个的+1. 根据结果进行字符串的拼接. 但是感觉很繁琐. 不知道有什么好的优雅的方式呢?
谢谢.
回复内容:
有数组[1,2,3,7,9,10,11,16]
请问如何快速优雅的获取到.1-3,7,9-11,16
这样的结果呢?
我想这是 先对数组sort 之后循环判断当前值是否是上一个的+1. 根据结果进行字符串的拼接. 但是感觉很繁琐. 不知道有什么好的优雅的方式呢?
谢谢.
這邊是 Python 的版本 (抱歉不會 PHP):
import itertools
def group_by_range(lst):
lst.sort()
for key, group in itertools.groupby(enumerate(lst), lambda t: t[1]-t[0]):
rp = list(group)
head, tail = rp[0][1], rp[-1][1]
yield '{}-{}'.format(head, tail) if head!=tail else str(head)
if __name__ == '__main__':
lst = [1,11,10,9,2,3,7,16]
print(','.join(list(group_by_range(lst))))我回答過的問題: Python-QA
我第一个想法也是跟题主一样=。=









