Python进阶(一):python技巧

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 = ['_']*3
test1 = [['_']*3]

'''不推荐以下方法来创建,效果如图所示,这样做的后果就是在第一维中,每个元素
都是指向同一地址,改变其中一个也就改变了其他元素了'''
test2 = [['_']*3]*3
test2[1][2] = 'O'

'''推荐使用这种方法来创建'''
test3 = [['_']*3 for i in range(3)]
test3[1][2] = 'O'

'''不推荐这种方法创建,原因同test2
test4 = []
test5 = ['_']*3
for 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 = l
c , *d = l
*e , f = l
print(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 = 10
b = 20
a , 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, 95
if x < y:
    result = x
else:
    result = y

我们可以简写为:

x, y = 100, 95
result = 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 False

def f2(b):
    if b < 15:
        return True
    else:
        return False

def test(number):
    if False in [f1(number), f2(number)]:
        print("True")
    else:
        print("False")

test(9)
test(12)
test(16)

这里写图片描述

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值