资讯专栏INFORMATION COLUMN

共享13个非常有利的Python代码片段

89542767 / 349人阅读

  小伙伴们好,此篇文章主要是跟大家分享13个Python中非常有利的代码片段,有兴趣的同学们赶紧来看一下吧,对大家有所帮助得话不要忘记保存以下


  ListsSnippets


  大家从最常见的算法设计目录刚开始


  1.把两个目录合拼成词典


  假定大家在Python中有两种目录,我希望把它们合并为词典方式,其中的一个目录的项做为词典的键,另外做为值。这就是在用Python编写代码时经常碰到的一个很常见的现象


  但为了解决这个问题,大家应该考虑好多个限定,比如2个目录大小,2个页面上原素种类,及其在其中是否存在重复原素,特别是我们将要应用元素做为key时。我们通过使用zip等内置函数来解决这个问题


  keys_list=['A','B','C']
  values_list=['blue','red','bold']
  #Thereare3waystoconvertthesetwolistsintoadictionary
  #1-UsingPython'szip,dictfunctionz
  dict_method_1=dict(zip(keys_list,values_list))
  #2-Usingthezipfunctionwithdictionarycomprehensions
  dict_method_2={key:valueforkey,valueinzip(keys_list,values_list)}
  #3-Usingthezipfunctionwithaloop
  items_tuples=zip(keys_list,values_list)
  dict_method_3={}
  forkey,valueinitems_tuples:
  ifkeyindict_method_3:
  pass#Toavoidrepeatingkeys.
  else:
  dict_method_3[key]=value


  2.把两个或几个目录合并为一个1个目录的目录


  另外比较常见的目标就是在我们有两种或者更多目录时,我希望把它们所有获取到一个页面上,在其中比较小目录的所有首项组成比较大页面上第一个目录


  比如,假如我们有4个目录[1,2,3],['a','b','c'],['h','e','y']和[4,5,6],他们想要为这几个目录构建一个新目录;它无疑是[[1,'a','h',4],[2,'b','e',5],[3,'c','y',6]]


  defmerge(*args,missing_val=None):
  #missing_valwillbeusedwhenoneofthesmallerlistsisshorterthamtheothers.
  #Getthemaximumlengthwithinthesmallerlists.
  max_length=max([len(lst)forlstinargs])
  outList=[]
  foriinrange(max_length):
  result.append([args[k]ifi
  returnoutList

  3.对词典目录进行筛选


  这一组平时目录目标就是排列每日任务,依据页面上涉及到的原素基本数据类型,我们将要选用略微各种方式对这种进行筛选。


  dicts_lists=[
  {
  "Name":"James",
  "Age":20,
  },
  {
  "Name":"May",
  "Age":14,
  },
  {
  "Name":"Katy",
  "Age":23,
  }
  ]
  #Therearedifferentwaystosortthatlist
  #1-Usingthesort/sortedfunctionbasedontheage
  dicts_lists.sort(key=lambdaitem:item.get("Age"))
  #2-Usingitemgettermodulebasedonname
  fromoperatorimportitemgetter
  f=itemgetter('Name')
  dicts_lists.sort(key=f)


  4.对字符串数组目录进行筛选


  我们通常遭遇1个字符串数组的目录,我们应该按字母顺序、长短或他们想要或我们自己的应用软件必须的所有外在因素对这种目录进行筛选


  my_list=["blue","red","green"]
  #1-Usingsortorsrteddirectlyorwithspecifckeys
  my_list.sort()#sortsalphabeticallyorinanascendingorderfornumericdata
  my_list=sorted(my_list,key=len)#sortsthelistbasedonthelengthofthestringsfromshortesttolongest.
  #Youcanusereverse=Truetofliptheorder
  #2-Usinglocaleandfunctools
  importlocale
  fromfunctoolsimportcmp_to_key
  my_list=sorted(my_list,key=cmp_to_key(locale.strcoll))

  5.依据另外一个目录对目录进行筛选


  有时候,我们也许需要使用1个目录的方式对另外一个目录进行筛选,因而,我们将要有一组数字目录(检索)跟一个我们想要使用这个检索进行筛选的目录


  a=['blue','green','orange','purple','yellow']
  b=[3,2,5,4,1]
  #Use list comprehensions to sort these lists
  sortedList=[val for(_,val)in sorted(zip(b,a),key=lambda x:
  x[0])]


  6.将目录投射到词典


  目录代码片段最后一个每日任务,假如已知1个目录并把它投射到词典中,换句话说,我们想要将我们自己的目录转换成含有数字键盘的词典


  mylist=['blue','orange','green']
  #Map the list into a dict using the map,zip and dict functions
  mapped_dict=dict(zip(itr,map(fn,itr)))
  DictionarySnippets


  如今处理过的数据类型是词典


  7.合拼2个或几个词典


  假定大家有两种或几个词典,而且我希望把它们全部合并为1个具备唯一键的词典


  from collections import defaultdict
  #merge two or more dicts using the collections module
  def merge_dicts(*dicts):
  mdict=defaultdict(list)
  for dict in dicts:
  for key in dict:
  res[key].append(d[key])
  return dict(mdict)


  8.旋转词典


  1个较为常见的词典目标就是假如我们有个词典而且必须旋转他的键合值,键将成为值,而值将成为键


  在我们这么做时,我们应该保证并没有反复键。值能够反复,但键不可以,以确保全部新键全是可以hashable的


  my_dict={
  "brand":"Ford",
  "model":"Mustang",
  "year":1964
  }
  #Invert the dictionary based on its content
  #1-If we know all values are unique.
  my_inverted_dict=dict(map(reversed,my_dict.items()))
  #2-If non-unique values exist
  from collections import defaultdict
  my_inverted_dict=defaultdict(list)
  {my_inverted_dict[v].append(k)for k,v in my_dict.items()}
  #3-If any of the values are not hashable
  my_dict={value:key for key in my_inverted_dict for value in my_inverted_dict[key]}
  StringSnippets


  接着是字符串数组的处理方法


  9.使用f字符串数组


  格式化字符串很有可能就是我们几乎天天必须完成一项工作,在Python中有很多种方法来格式化字符串,使用f字符串数组是很不错的挑选


  #Formatting strings with f string.
  str_val='books'
  num_val=15
  print(f'{num_val}{str_val}')#15 books
  print(f'{num_val%2=}')#1
  print(f'{str_val!r}')#books
  #Dealing with floats
  price_val=5.18362
  print(f'{price_val:.2f}')#5.18
  #Formatting dates
  from datetime import datetime;
  date_val=datetime.utcnow()
  print(f'{date_val=:%Y-%m-%d}')#date_val=2021-09-24

  10.查验签串的


  一个较为常见的任务是查验字符串数组能否在与字符串数组页面上


  addresses=["123 Elm Street","531 Oak Street","678 Maple Street"]
  street="Elm Street"
  #The top 2 methods to check if street in any of the items in the addresses list
  #1-Using the find method
  for address in addresses:
  if address.find(street)>=0:
  print(address)
  #2-Using the"in"keyword
  for address in addresses:
  if street in address:
  print(address)


  11.以字节数为基准获取字符串大小


  有时候,尤其是在搭建运行内存重要应用软件时,大家要搞清楚我们自己的字符串数组用了是多少运行内存


  str1="hello"
  str2="????"
  def str_size(s):
  return len(s.encode('utf-8'))
  str_size(str1)
  str_size(str2)
  Input/Outputoperations

  最终我们来看一下输出等方面的代码片段


  12.查验文档存不存在


  在计算机科学和大多数别的应用软件中,大家经常要文本文件中获取数据或者向在其中载入数据信息,但是做到这些,我们应该查验文档存不存在,因而,我们应该保证编码


  不会因为IO不正确而停止


  #Checking if a file exists in two ways
  #1-Using the OS module
  import os
  exists=os.path.isfile('/path/to/file')
  #2-Use the pathlib module for a better performance
  from pathlib import Path
  config=Path('/path/to/file')
  if config.is_file():
  pass

  13.分析excel表


  另外一种非常普遍文件互动是以excel表中解析数据,大家应用CSV控制模块来帮我们高效地实行该每日任务


  import csv
  csv_mapping_list=[]
  with open("/path/to/data.csv")as my_data:
  csv_reader=csv.reader(my_data,delimiter=",")
  line_count=0
  for line in csv_reader:
  if line_count==0:
  header=line
  else:
  row_dict={key:value for key,value in zip(header,line)}
  csv_mapping_list.append(row_dict)
  line_count+=1


  好啦,我们一起学了13个代码片段,这种精彩片段简易、简洁明了且高效率,不管我们在哪些应用软件行业工作中,最终会在对应的Python工程中最少应用其中一个,因此个人收藏就是一个不错的选择!


  综上所述,这些文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128843.html

相关文章

  • DocumentFragment文档碎片

    摘要:在树中,文档片段被其所有的孩子所代替。因为文档片段存在于内存中,并不在树中,所以将子元素插入到文档片段时不会引起页面回流对元素位置和几何上的计算。因此,使用文档片段通常会起到优化性能的作用。在里说过接口表示文档的一部分或一段。 DocumentFragments 是DOM节点。它们不是主DOM树的一部分。通常的用例是创建文档片段,将元素附加到文档片段,然后将文档片段附加到DOM树。在D...

    codercao 评论0 收藏0
  • 为什么标准化对网络运营有利:创新而非障碍

    摘要:为什么标准化对网络运营有利创新而不是阻碍标准化有时被视为对创新的攻击。然而,以标准化为契机,为自动化系统和软件建立坚实的基础,有利于企业的发展。为什么标准化对网络运营有利:创新而不是阻碍标准化有时被视为对创新的攻击。被迫放弃多语种自助餐,采用更有限的菜单,听起来总是令人窒息。这可能是因为标准化通常与监管合规标准有关,这些标准的官方名称听起来像是ISO 8076.905E,并与检查表、审计员和...

    luckyw 评论0 收藏0
  • Java开发

    摘要:大多数待遇丰厚的开发职位都要求开发者精通多线程技术并且有丰富的程序开发调试优化经验,所以线程相关的问题在面试中经常会被提到。将对象编码为字节流称之为序列化,反之将字节流重建成对象称之为反序列化。 JVM 内存溢出实例 - 实战 JVM(二) 介绍 JVM 内存溢出产生情况分析 Java - 注解详解 详细介绍 Java 注解的使用,有利于学习编译时注解 Java 程序员快速上手 Kot...

    LuDongWei 评论0 收藏0
  • 为什么标准化对网络运营有利:创新而非障碍

    摘要:为什么标准化对网络运营有利创新而不是阻碍标准化有时被视为对创新的攻击。然而,以标准化为契机,为自动化系统和软件建立坚实的基础,有利于企业的发展。为什么标准化对网络运营有利:创新而不是阻碍标准化有时被视为对创新的攻击。被迫放弃多语种自助餐,采用更有限的菜单,听起来总是令人窒息。这可能是因为标准化通常与监管合规标准有关,这些标准的官方名称听起来像是ISO 8076.905E,并与检查表、审计员和...

    suemi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<