
初识Python语言,觉得python满足了你上学时候对编程语言的所有要求。python语言的高效编程技巧让那些曾经苦逼学了四年c或者c++的人,兴奋的不行不行的,终于解脱了。高级语言,如果做不到这样,还扯啥高级呢?
01 交换变量
  
   - 
    
     
    
    
     
      >>>a=3
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>>b=6
     
    
- 
    
     
    
    
     
      复制代码
     
    
这个情况如果要交换变量在c++中,肯定需要一个空变量。但是python不需要,只需一行,大家看清楚了
  
   - 
    
     
    
    
     
      >>>a,b=b,a
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>>pr
      int(a)>>>
      6
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>>pt
      int(b)>>>
      5
     
    
- 
    
     
    
    
     
      复制代码
     
    
02 字典推导(Dictionary comprehensions)和集合推导(Set comprehensions)
大多数的Python程序员都知道且使用过列表推导(list comprehensions)。如果你对list comprehensions概念不是很熟悉——一个list comprehension就是一个更简短、简洁的创建一个list的方法。
  
   - 
    
     
    
    
     
      >>> some_list = [
      1, 
      2, 
      3, 
      4, 
      5]
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> another_list = [ x + 
      1 
      for x 
      in some_list ]
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> another_list
     
    
- 
    
     
    
    
     
      [
      2, 3, 4, 5, 6]
     
    
- 
    
     
    
    
     
      复制代码
     
    
自从python 3.1 起,我们可以用同样的语法来创建集合和字典表:
  
   - 
    
     
    
    
     
      >>> 
      # Set Comprehensions
     
    
- 
    
     
    
    
     
      >>> some_list = [
      1, 
      2, 
      3, 
      4, 
      5, 
      2, 
      5, 
      1, 
      4, 
      8]
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> even_set = { x 
      for x 
      in some_list 
      if x % 
      2 == 
      0 }
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> even_set
     
    
- 
    
     
    
    
     
      set([
      8, 
      2, 
      4])
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> 
      # Dict Comprehensions
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> d = { x: x % 
      2 == 
      0 
      for x 
      in 
      range(
      1, 
      11) }
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> d
     
    
- 
    
     
    
    
     
      {
      1: 
      False, 
      2: 
      True, 
      3: 
      False, 
      4: 
      True, 
      5: 
      False, 
      6: 
      True, 
      7: 
      False, 
      8: 
      True, 
      9: 
      False, 
      10: 
      True}
     
    
- 
    
     
    
    
     
      复制代码
     
    
 在第一个例子里,我们以some_list为基础,创建了一个具有不重复元素的集合,而且集合里只包含偶数。而在字典表的例子里,我们创建了一个key是不重复的1到10之间的整数,value是布尔型,用来指示key是否是偶数。这里另外一个值得注意的事情是集合的字面量表示法。我们可以简单的用这种方法创建一个集合:
  
   - 
    
     
    
    
     
      >>> my_set = {
      1, 
      2, 
      1, 
      2, 
      3, 
      4}
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> my_
      set
     
    
- 
    
     
    
    
     
      set(
      [1, 2, 3, 4])
     
    
- 
    
     
    
    
     
      复制代码
     
    
而不需要使用内置函数set()。
03 计数时使用Counter计数对象
这听起来显而易见,但经常被人忘记。对于大多数程序员来说,数一个东西是一项很常见的任务,而且在大多数情况下并不是很有挑战性的事情——这里有几种方法能更简单的完成这种任务。
Python的collections类库里有个内置的dict类的子类,是专门来干这种事情的:
  
   - 
    
     
    
    
     
      >>> 
      from collections import Counter
     
    
- 
    
     
    
    
     
      >>> c = 
      Counter( hello world )
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> c
     
    
- 
    
     
    
    
     
      Counter({
       l : 
      3,
        o : 
      2,
          : 
      1,
        e : 
      1,
        d : 
      1,
        h : 
      1,
        r : 
      1,
        w : 
      1})
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> c.
      most_common(
      2)
     
    
- 
    
     
    
    
     
      [( l , 
      3), ( o , 
      2)]
     
    
- 
    
     
    
    
     
      复制代码
     
    
04 漂亮的打印出JSON
JSON是一种非常好的数据序列化的形式,被如今的各种API和web service大量的使用。使用python内置的json处理,可以使JSON串具有一定的可读性,但当遇到大型数据时,它表现成一个很长的、连续的一行时,人的肉眼就很难观看了。
为了能让JSON数据表现的更友好,我们可以使用indent参数来输出漂亮的JSON。当在控制台交互式编程或做日志时,这尤其有用:
  
   - 
    
     
    
    
     
      >>> 
      import json
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> 
      print(json.dumps(data))  
      # No indention
     
    
- 
    
     
    
    
     
      {
      "status": 
      "OK", 
      "count": 
      2, 
      "results": [{
      "age": 
      27, 
      "name": 
      "Oz", 
      "lactose_intolerant": 
      true}, {
      "age": 
      29, 
      "name": 
      "Joe", 
      "lactose_intolerant": 
      false}]}
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      >>> 
      print(json.dumps(data, indent=
      2))  
      # With indention
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
        
      "status": 
      "OK",
     
    
- 
    
     
    
    
     
        
      "count": 
      2,
     
    
- 
    
     
    
    
     
        
      "results": [
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
          {
     
    
- 
    
     
    
    
     
            
      "age": 
      27,
     
    
- 
    
     
    
    
     
            
      "name": 
      "Oz",
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
            
      "lactose_intolerant": 
      true
     
    
- 
    
     
    
    
     
          },
     
    
- 
    
     
    
    
     
          {
     
    
- 
    
     
    
    
     
            
      "age": 
      29,
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
            
      "name": 
      "Joe",
     
    
- 
    
     
    
    
     
            
      "lactose_intolerant": 
      false
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
     
        ]
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
     
      复制代码
     
    
 同样,使用内置的pprint模块,也可以让其它任何东西打印输出的更漂亮。
05 解决FizzBuzz
前段时间Jeff Atwood 推广了一个简单的编程练习叫FizzBuzz,问题引用如下:
写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。
这里就是一个简短的,有意思的方法解决这个问题:
  
   - 
    
     
    
    
     
      for x 
      in 
      range(
      1,
      101):
     
    
- 
    
     
    
    
     
          
      print
      "fizz"[x%
      3*
      len( fizz )::]+
      "buzz"[x%
      5*
      len( buzz )::] 
      or x
     
    
- 
    
     
    
    
     
          
     
    
- 
    
     
    
    
     
      06 
      if 语句在行内
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      print 
      "Hello" 
      if 
      True 
      else 
      "World"
     
    
- 
    
     
    
    
     
      >>> Hello
     
    
- 
    
     
    
    
     
      复制代码
     
    
07 连接
下面的最后一种方式在绑定两个不同类型的对象时显得很cool。
  
   - 
    
     
    
    
     
      nfc = [
      "Packers", 
      "49ers"]
     
    
- 
    
     
    
    
     
      afc = [
      "Ravens", 
      "Patriots"]
     
    
- 
    
     
    
    
     
      print nfc + afc
     
    
- 
    
     
    
    
     
      >>> [ Packers ,  
      49ers ,  Ravens ,  Patriots ]
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      print str(
      1) + 
      " world"
     
    
- 
    
     
    
    
     
      >>> 
      1 world
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      print 
      `1` + 
      " world"
     
    
- 
    
     
    
    
     
      >>> 
      1 world
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      print 
      1, 
      "world"
     
    
- 
    
     
    
    
     
      >>> 
      1 world
     
    
- 
    
     
    
    
     
      print nfc, 
      1
     
    
- 
    
     
    
    
     
      >>> [ Packers ,  
      49ers ] 
      1
     
    
- 
    
     
    
    
     
      复制代码
     
    
 08 数值比较
这是我见过诸多语言中很少有的如此棒的简便法
  
   - 
    
     
    
    
     
      x = 
      2
     
    
- 
    
     
    
    
     
      if 
      3 > x > 
      1:
     
    
- 
    
     
    
    
     
         
      print x
     
    
- 
    
     
    
    
     
      >>> 
      2
     
    
- 
    
     
    
    
     
      if 
      1 < x > 
      0:
     
    
- 
    
     
    
    
     
         
      print x
     
    
- 
    
     
    
    
     
      >>> 
      2
     
    
- 
    
     
    
    
     
      复制代码
     
    
09 同时迭代两个列表
  
   - 
    
     
    
    
     
      nfc = [
      "Packers", 
      "49ers"]
     
    
- 
    
     
    
    
     
      afc = [
      "Ravens", 
      "Patriots"]
     
    
- 
    
     
    
    
     
      for teama, teamb 
      in 
      zip(nfc, afc):
     
    
- 
    
     
    
    
     
           
      print teama + 
      " vs. " + teamb
     
    
- 
    
     
    
    
     
      >>> Packers vs. Ravens
     
    
- 
    
     
    
    
     
      >>> 49ers vs. Patriots
     
    
- 
    
     
    
    
     
      复制代码
     
    
10 带索引的列表迭代
  
   - 
    
     
    
    
     
      teams = [
      "Packers", 
      "49ers", 
      "Ravens", 
      "Patriots"]
     
    
- 
    
     
    
    
     
      for 
      index, team in enumerate(teams):
     
    
- 
    
     
    
    
     
          
      print 
      index, team
     
    
- 
    
     
    
    
     
      >>> 
      0 Packers
     
    
- 
    
     
    
    
     
      >>> 
      1 
      49ers
     
    
- 
    
     
    
    
     
      >>> 
      2 Ravens
     
    
- 
    
     
    
    
     
      >>> 
      3 Patriots
     
    
转载:https://blog.csdn.net/weixin_73136678/article/details/128555112
 
					