渗透利器-kali工具 (第四章-3) Python数据结构学习

本文内容:

  • 列表、元组、字典、集合
  • 数据结构的技巧
  • 综合项目提升

 

数据结构:拥有足够多的东西,需要一个存储东西的容器,数据越多,就会越重视数据结构的作用。

1.列表、元素、字典、集合:

  1.列表:[]

    1.列表最显著的特征是:

      1.列表中的每一个元素都是可变的;

      2.列表中的元素是有序的,也就是每一个元素都一个位置;

      3.列表可以容纳Python中的任何对象。

    2.列表的操作:

      1.insert() 插入,需要指定插入位置:

        在使用insert方法的时候,必须指定在列表中需要插入新的元素位置,插入元素的实际位置是在指定位置元素之前的位置。

        如果指定插入的位置在列表中不存在,实际上也就超出指定列表长度,那么这个元素一定会被放在列表的最后位置。

        举例:

          a = ['a','b','c']

          a.insert(1,'d')

        补充:

          a[0:0]=['e']

          也可以起到插入的效果。

      2.remove() 删除

        举例:

          a = ['a','b','c']

          a.remove('e')

        补充:[其余删除方式]

          del a[0:1]

          a[1]=e 也是可以说是修改

  2.字典:{}

    1.字典特征:

      1.字典中的数据必须是键值对的形式出现。

      2.逻辑上,键是不能重复的,而值可以重复。

      3.字典中的键[key]是不可变的,也就是无法修改的。

      4.字典中的值[auo]是可变的,可修改,可以是任何对象。

      举例:

        dict{'a':'bai','c':'hei','d':'red'}

      书写:字典的书写方式,键与值并不能脱离对方而存在。

    2.字典的操作:

      列表中有用来添加多个元素的方法extend(),在字典中也有对应的添加多个元素的方法:date();

      删除字典中的元素则使用del方法。

      注意:

        字典是不能够切片的。

        通过键对值进行操作:比如删除,输出等操作。

      1.添加字典:

        a = {'k1':1,'k2':2,'k3':3}

        a['k4'] = 4 添加单个键值对

        a.update({'k5':5,'k6':6}) 添加多个键值对

      2.删除字典:

        del a['key6'] 删除键值对,通过指定键删除

  3.元组:()

    1.元组的特征:

      1.元素其实可以理解成一个稳固版的列表,但是元组是不可修改的。

      2.因此在列表中存在的方法均不可以使用在元组上。

      3.但是元组是可以被查看索引的,方式和列表一样。

    2.元组的操作:

      举例:

        a = ('a','b','c')

        a[0]

  4.集合:()

    1.集合特征:

      1.集合则更接近数学集合的概念;

      2.每一个集合中的元素是无序的、不重复的任意对象。

      3.可以通过集合去判断数据的从属关系。

      4.可以通过稽核吧数据结构中重复的元素减掉。

      注意:集合不能被切片也不能被索引,除了做集合运算之外,集合元素就可以添加还有删除。

    2.集合的操作:

      举例:

        a = {1,2,3,4}

      1.添加:[add]

        a.add(5)

      2.删除:[discard]

        a.discard(4)

2,数据结构的技巧:

  1.多种循环:

    1.多种循环:
      sorted函数按照长短、大小、英文字符的顺序给每个列表中的元素进行排序。

      这个函数会常在数据展示中使用,其中一个非常重要的地方,sorted函数不会改变列表本身,可以理解成是先将列表复制,然后在进行顺序整理。

      在列表过程中,如果同时需要两个列表应该怎么办?

      可以使用zip函数:

      格式:for a,b in zip (L1,L2):

      举例:

        a = [1,2,3,4]

        b = [1,4,5,6]

        for a,b in zip(a,b):

          print(b,'is',a)

  2.推导式:

    1.列表推导式:

      list = [i |  for i in a]

      列表推导式的用法很好理解,可以简单的看成两部分:

        从 | 后面是for循环表达式,| 前面可以让认为是我们想要放在列表中的元素。

      enumerate:循环列表时获取元素的索引。

      普通写法:

        a = []

        for i in range(1,5):     1-4

          a.append(i)

        print(a)

      推导式:

        a = {i:j for i,j in zip(range(1,5),'abcd,')}

        print(a)

        运行结果:{1:'a',2:'b',……4,'d'}

3,综合项目提升:

  1.将一句话,每个单词分开来:

    a = 'my name dddd'

    b = a.split()

    print(b)

    运行结果:['my','name','dddd']

  2.统计文章中单词出现的次数:

    代码:

1 import string
2 path = 'c/User/python/ww.txt'
3 with open(path ,'r') as text:
4   words = [raw_word.string(string.puncuation).lower() for raw_word in text.read().split()]
5   words_index = set(words)
6   counts_dict = {index:words.counts(index) for index in words_index}
7   for word in sorted(counts,key=lambda x:counts_dict[x],reverse=True):
8     print('{}--{} times'.format(word,counts_dict[word]))

 

posted @ 2020-05-13 08:22  TheHIde  阅读(250)  评论(0编辑  收藏  举报