2017-03-13 46 views
-1

我需要帮助写一个脚本,将采取以下数组['James',1,'sam', 16,84,'mason',197]并把所有的数字array和所有的名字到array名称。每个数组将按顺序排列。拆分和排序这个数组

输出:数字[1,16,84,197]名称[ '詹姆斯', 'SAM', '梅森']

+4

这看起来像一所学校工作。自己解决它,否则你将永远学不到任何东西 – Martin

+0

https://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions – Martin

回答

0

既然你没有指定的编程语言,我建议蟒蛇,因为它是最简单的一个。我还假设16,84是一个16.84的浮点数。此外,如果阵列格式化,因为这只能[...,名称,数量,...]

a = ['james', 1, 'sam', 16.84, 'mason', 197] 
names = [] 
numbers = [] 
for i in range(len(a)//2): 
    names += [a[i*2]] 
    numbers += [a[i*2+1]] 

其中a[i*2]是当前名称,a[i*2+1]是当前数。

+0

我不认为编程语言使用逗号作为十进制分隔符如同欧洲国家一样。 '16,84'是两个用逗号分隔的整数。 – Martin

0

使用Python我会做到以下几点:

array = ['james',1,'sam', 16, 84,'mason',197] 
names = [s for s in array if isinstance(s, basestring)] 
numbers = [i for i in array if isinstance(i, int)] 

我猜测,在列表中的所有数字都是整数。如果您有什么样的数字(整型,长整型,浮点......),你可以做到以下几点:

numbers = [i for i in array if isinstance(i, (int, long, float, complex))] 
0
var name = [], numbers = []; 
var array = ['james',1,'sam', 16, 84,'mason',197]; 

array.forEach(function(item){ 
isNaN(item) ? name.push(item) : numbers.push(item); 
});