题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
class Solution:
def PrintMinNumber(self, numbers):
if numbers == []:
return ""
else:
numbers = [str(i) for i in numbers]
numbers.sort(cmp = lambda x,y : int(x+y)-int(y+x))
return int(''.join(numbers))
这段代码主要参考网上的。
除了 str()是转numner int等类型为字符串,int强制转化为整形数组,以及 ‘ ‘.join(numbers) 把字符数组转化为字符串。
[Python join() 方法用于将序列中的元素(必须是str) 以指定的字符 连接生成一个新的字符串。]
剩下的知识点就是sort排序了。
转自: https://blog.csdn.net/chichoxian/article/details/54948875
python中将一个全部为int的list 转化为str的list
假设有这样一个List
[1,2,3,4,5] 转化为下面这个样子
[‘1’,’2’,’3’,’4’,’5’]
解决方法一:
a = [1,2,3]
b = [ str(i) for i in a ]
1
2
解决方法二:
>>> L = [1,2,3,4,5]
>>> map(str, L)
['1', '2', '3', '4', '5']
所以本题,先转化int为str,这样是为了直接把str连在一起。
map()的用法:
map()函数
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
1、当seq只有一个时,将函数func作用于这个seq的每个元素上,并得到一个新的seq。
例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]
如果希望把list的每个元素都作平方,就可以用map()函数:
因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:
def f(x):
return x*x
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
输出结果:
[1, 4, 9, 10, 25, 36, 49, 64, 81]
注意:map()函数不改变原有的 list,而是返回一个新的 list。
利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。
map(str,L)就是把L这个序列str()转化为str形式。
sort函数
sorted是内建函数,会生成新的数据。sort()是list才有的函数,只是对原来list改变顺序,不产生新值。python2输入时cmp,python3是key.
《python基础编程》里有讲到一段高级排序:
“如果希望元素能按照特定的方式进行排序(而不是sort函数默认的方式,即根据python的默认排序规则按升序排列元素,第5章内对此进行讲解),那么可以通过compare(x,y)的形式自定义比较函数。compare(x,y)函数会在x<y时返回负数,在x>y时返回正数,如果x=y则返回0(根据你的定义)。定义好该函数之后,就可以提供给sort方法作为参数了。内建函数cmp提供了比较函数的默认实现方式:
内建函数cmp在python2里使用,python3不再使用。对于sort()方法,如果不传入参数,默认cmp为None,
#升序排列
numbers = [5,2,9,7]
def mycmp1(x,y):
return x-y
numbers.sort(cmp = mycmp1)
print numbers
>>>
[2, 5, 7, 9]
#降序排列
numbers = [5,2,9,7]
def mycmp2(x,y):
return y-x
numbers.sort(cmp = mycmp2)
print numbers
>>>
[9,7,5,2]
其中的规律就是:两两比较,如果返回为正,则交换两者的位置,即y在前x在后,否则x在前y在后。也可以这样解释,升序就是拿第一个数比对后面的数,降序就是拿最后一个数比对前面的数。
#升序排列
numbers = [5,2,9,7]
numbers.sort(cmp = lambda x,y: x-y)
print numbers
>>>
[2,5,7,9]
#降序排列
numbers = [5,2,9,7]
numbers.sort(cmp = lambda x,y: y-x)
print numbers
在python3里的用法:https://www.cnblogs.com/test123/p/9851648.html
在python3中,sort是对于列表类型的排序函数,函数原型为:L.sort(key=None, reverse=False),该方法没有返回值,是对列表的就地排序。
•key-- 是指用来比较的关键字,可以说是列表元素的一个权值。key一般用来接受一个函数(或者匿名函数),这个函数只接受一个元素,并返回其权值
•reverse-- 是否逆序排列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
# write code here
list1=[]
list2=[]
for i in range(len(array)):
if array[i]%2==1:
list1.append(array[i])
else:
list2.append(array[i])
list1.extend(list2)
return list1
思路比较简单,知识点主要记录下list合并知识: