Python进阶(一):python技巧

来源:互联网 发布:国裕数据 编辑:程序博客网 时间:2024/06/08 19:10

Python进阶(一)

1.列表的创建

除了常见的列表创建方法外,还有一下几种创建方式:

'''split()函数用来分割文本,可以给定分割符号,如上以 , 为分割符'''suits = 'Spade,Heart,Club,Diamond'.split(',')'''用for..in ..语句块可以使得列表的创建更加简洁,尤其是需要添加大量元素。list(seq)函数用来创建,不过只能传入一个参数.'''ranks = [str(x) for x in range(2,11)] + list('JQKA')'''笛卡尔积的应用,下面创建Card列表运用了笛卡尔积,好处就是我们在创建一个二元列表时不需要像其他语言一样需要两个for语句来嵌套,这样更加简洁。而且python对笛卡尔积进行了优化,效率比两个for循环嵌套更快。'''Card = [(suit,rank) for suit in suits for rank in ranks[:2]]

上面创建的各列表结果如下:
这里写图片描述
另外还有运用*来创建列表的:

#可以在下面结果图中看到这些操作会产生什么结果'''*号在不同的位置会产生不同的效果'''test = ['_']*3test1 = [['_']*3]'''不推荐以下方法来创建,效果如图所示,这样做的后果就是在第一维中,每个元素都是指向同一地址,改变其中一个也就改变了其他元素了'''test2 = [['_']*3]*3test2[1][2] = 'O''''推荐使用这种方法来创建'''test3 = [['_']*3 for i in range(3)]test3[1][2] = 'O''''不推荐这种方法创建,原因同test2test4 = []test5 = ['_']*3for i in range(3):    test4.append(test5)test4[1][2] = 'O'

效果图:
这里写图片描述

2017.10.29补充
我们用列表生成一个二维数组:

list1 = [[range(5)] for i in range(5)]

结果

[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

2.拆包

拆包可以运用到列表,元组中,实现快速拆分其元素的效果

'''*号表示将拆分后多余元素的放在一个列表里面'''l = [10,11,12]a,b,c = lc , *d = l*e , f = lprint(a,b,c)print(c,d)print(e,f)'''l如果是一个列表或者元组时,*l表示将每个元素都拆包出来'''print(*l)

效果图:
这里写图片描述
为了更好的理解,我们看下面例子:

suits = 'Spade,Heart,Club,Diamond'.split(',')ranks = [str(x) for x in range(2,11)] + list('JQKA')Card = [(suit,rank) for suit in suits for rank in ranks[:1]]print(Card)for tmp in Card:    print(*tmp)'''#效果和上面一样  for tmp in Card:    print('%s %s'%tmp)'''

效果图:
这里写图片描述

这里另外介绍python一个很方便的操作,就是两个变量在进行值交换时不用创建一个中间值变量:

a = 10b = 20a , b = b , a

效果图我就不贴上来了


3.枚举

有时我们需要枚举一个列表,元组中的元素时候,可以写成这样:

list1 = [10, 654, 56, 96]for i, item in enumerate(list1):    print(i, item)

这里写图片描述


4.判断

1.简化if-else

在python中如果使用了if-else语句我们本来是这样写的:

x, y = 100, 95if x < y:    result = xelse:    result = y

我们可以简写为:

x, y = 100, 95result = x if x > y else y

2.当判断条件多的时候,视情况运用列表:

例如:

if x in [10, 20, 30]:    print("hello")

还可以这样子用:

def f1(a):    if a < 10:        return True    else:        return Falsedef f2(b):    if b < 15:        return True    else:        return Falsedef test(number):    if False in [f1(number), f2(number)]:        print("True")    else:        print("False")test(9)test(12)test(16)

这里写图片描述

原创粉丝点击