手记

[硕.Love Python] 不重复的3位数

1.题目: 0~9这10个数字可以组成多少不重复的3位数?

2.源码:

[100 * x + 10 * y + z for x in xrange(1, 10) for y in xrange(10) for z in xrange(10) if (lambda a, b, c: (a - b) * (b - c) * (c - a))(x, y, z)]

3.思路: 迭代->两两比较.

6人推荐
随时随地看视频
慕课网APP

热门评论

老师,用这种方法觉得怎样?

[x for x in xrange(100,1000) if (str(x)[0] != str(x)[1] and str(x)[1] != str(x)[2] and str(x)[0] != str(x)[2])]



#coding=utf-8
def my_cmp(a,b,c):
    # 3个数互相减,没有相同就不会反回0
    return (a-b)*(b-c)*(c-a)
l=[]
for x in xrange(1,10):
    for y in xrange(10):
        for z in xrange(10):
            if my_cmp(x,y,z):
                l.append(x*100+y*10+z)
print l


搞懂了

第一次知道匿名函数可以这么用

>>> (lambda x,y:x+y)(3,5)
8


有这么多:9*9*8=648

查看全部评论