10个Python小技巧你值得拥有

  

  

你有一个清单:<代码>袋=[1、2、3、4、5)

  

现在你想让所有元素翻倍,让它看起来是这个样子:<代码>(2、4、6、8、10]

  

大多初学者,根据之前语言的经验会大概这样来做
  

        袋=[1、2、3、4、5)   因为我在范围(len(袋):   包[我]=[我]袋* 2      

但是有更好的方法:
  

  

<代码>袋=(elem elem的* 2袋)

  

很简洁对不对吗?这叫做Python的列表推导式。

  

  

还是上面的列表。如果可能尽量避免这样做:
  

        袋=[1、2、3、4、5)   因为我在范围(len(袋):   打印(包[我])      

取而代之的应该是这样:
  

        袋=[1、2、3、4、5)   我的包:   打印(i)      

如果x是一个列的表,你可以对它的元素进行迭代。多数情况下你不需要各元素的索引,但如果你非要这样做,那就用列举函数。它像下边的样子:
  

        袋=[1、2、3、4、5)   指数,元素的枚举(袋):   打印(指数(元素)      

非常直观明了。

  

  

如果你是从java或C语者言转到Python来,可能会习惯于这样:
  

        一个=5   b=10   #交换a和b   tmp=一个   a=b   b=tmp      

但Python提供了一个更自然更好的方法。
  

        一个=5   b=10   #交换a和b   a、b=b,      

  

假如你要一个是10个整数0的列的表,你可能首先想到:
  

        袋=[]   在范围(10):_   bag.append (0)      

换个方式吧:
  

  

<代码>袋=[0]* 10

  

看,多优雅。

  

注意:如果你列表包含了列表,这样做会产生浅拷贝。

  

举个例子:
  

        bag_of_bags=[[0]] * 5 # [[0], [0], [0], [0], [0]]   bag_of_bags [0] [0]=1 # [[1], [1], [1], [1], [1]]      

哎呀!所有的列表都改变了,而我们只是想要改变第一个列表。

  

改一改啦:
  

        bag_of_bags=[[0] _的范围(5))   # [[0],[0],[0],[0],[0]]   bag_of_bags [0] [0]=1   # [[1],[0],[0],[0],[0]]      

"过早优化是万恶之源”问问自己,初始化一个列表是必须的吗?

  

  

你会经常需要打印字符串。要是有很多变量,避免下面这样:
  

        name=" Raymond "   年龄=22   born_in="奥克兰"   字符串="你好,我的名字是" +名称+“我”+ str(年龄)+”年。我出生在“+ born_in +”。“   打印(string)      

额,这看起来多乱呀?你可以用个漂亮简洁的方法来代替,.format。

  

这样做:
  

        name=" Raymond "   年龄=22   born_in="奥克兰"   字符串="你好,我的名字叫{0},{1}岁。我出生在{2}。格式(姓名、年龄、born_in)   打印(string)      

  

Python允许你在一个函数中返回多个元素,这让生活更简单。但是在解包元组的时候出出线这样的常见错误:
  

        def二进制():返回0,1   结果=二进制()   0=结果[0]   一个=结果[1]      

这是没必要的,你完全可以换成这样:
  

        def二进制():返回0,1   零,>   在此={}   袋=[2、3、1、2、5,6,7,9,2、7]   我的包:   如果我在此方面:   在此[我]+=1:   在此[我]=1   因为我在范围(10):   如果我在此方面:   print(“项{}:{}”。格式(我在此[我]))   其他:   print(“项{}:{}”。格式(我,0))      

但是,用get()是个更好的办法。
  

        在此={}   袋=[2、3、1、2、5,6,7,9,2、7]   我的包:   在此[我]=此方面。(我,0)+ 1   因为我在范围(10):   print(“项{}:{}”。格式(我在此。(我,0)))      

当然你也可以用setdefault来代替。

  

这还用一个更简单却多费点开销的办法:

10个Python小技巧你值得拥有