• 《think in python》学习-10


    think in python 10

    列表

    和字符串相似,列表是值得序列。在列表中,它可以是任何类型,列表中的值成为元素,有时也称为列表项

        s = [10,20,30,40]
        print s
    #列表也是可嵌套的。
        s = [10,20,30,[2,3,4]]
        print s
    

    列表是可变的

    s = [10,20,30,[2,3,4]]
    print s
    
    s[1] = 15
    print s
    
    

    通过操作下班,改变了 列表中的某个值。

    遍历一个列表

    for i in s:
        print i
    
    for i in range(len(s)):
        print s[i]
    

    操作列表

    a = [1,2,3]
    b = [4,5,6]
    c = a+b
    print c
    d = a*4
    print d
    

    +号操作符可以拼接列表,*号可以重复一个列表多次

    列表切片

    切片操作也可以用于列表

    word = ['a','b','c','d','e','f','g']
    # [start:end:length]
    
    print word[::-1]
    print word[:]
    print word[3:4]
    

    列表方法

    append方法可以在列表尾部添加新的元素

    word.append("h")
    print word
    

    extend接受一个列表作为参数,并将其附加到列表中

    word2 = ['i','j','k']
    word.extend(word2[::-1])
    print word
    

    sort方法将列表中的元素从低到高重新排序

    word.sort()
    print word
    

    删除元素

    从列表中删除元素,有很多方法,如果你知道下班可以使用pop
    pop返回被删掉的值

    w = word.pop(1)
    print w
    

    del则是直接删掉指定的值

    del word[1]
    

    remove可以删掉元素本身

    word = ['A','B']
    word.remove('A')
    

    删除多个 可以利用 del配合 切片进行

    del word[1:5]
    

    列表和字符串

    字符串是 字符的序列, 列表是的序列。

    list函数可以将字符串转换成一个字符的列表

    name='hebo'
    sn = list(name)
    print sn   
    

    split可以按指定方式拆分字符

    s =' hello world today'
    ns = s.split()
    print ns
    

    练习

    1. 编写一个函数nested_sum 接受一个由内嵌的整数列表组成的列表作为形参,并将内嵌列表中的值全部加起来。
      def nested_sum(list):
          l = []
          for i in list:
              l += i
          return sum(l)
      
      print nested_sum([[1,2,3,4],[3,2,4,5]])
      
    2. 编写一个函数,接受一个数字列表,并返回其积累和,即一个新的列表,期第i位元素是原始列表的前i+1元素的和
      def sum_list(list):
          r = []
          for i in list:
              r.append(sum(list[:i]))
          return r
      
      print sum_list([1,2,3])
      
    3. 写一个middle函数,接受一个列表作为形参,返回一个新列表。包含除了第一个和最后一个元素之外的所有元素
      def middle(n):
          return n[1:len(n)-1]
      
    4. 编写一个chop函数,接受一个列表,修改它,删除它第一个和最后一个元素 并返回None
      def chop(list):
          del list[0]
          del list[len(list)-1]
          return None
      
    5. 编写一个is_sorted来判断一个列表是否按照升序排列。
      def is_sorted(list):
          s=list[:]
          s.sort()
          for i in range(len(list)-1):
              if s[i]!=list[i]:
                  return False
          return True
      
    6. 编写一个has_duplicates函数,接受一个列表,当其中任何一个元素出现多一于一次,返回True
      def has_duplicates(list):
          s = list[:]
          s.sort()
          for i in range(len(s)-1):
              if s[i]==s[i+1]:
                  return True
      
          return False
      
      print has_duplicates([1,2,3,4,5])
      
    7. 一个班级有23个学生,其中2个人生日相同几率有多大?随机生成23个同学的生日样本,并检查是否有相同几率。
      def random_bdays(n):
      t = []
      for i in range(n):
          t.append(random.randint(1,365))
      return t
      
      print random_bdays(23)
      
      def count_sambday(stu):
          count = 0
          for i in range(365):
              t = random_bdays(stu)
              if has_duplicates(t):
                  count +=1
          return count
      
      print count_sambday(23)
      
    8. 并写一个remove_duplicates接受一个列表,返回一个新列表,其中只包含原始列表中的每个元素 唯一一份。
      def remove_duplicates(list):
          r = []
          for i in list:
              if r.count(i)<1:
                  r.append(i)
          return r
      
      print remove_duplicates([1,1,3,4,5,6,7])
      
      
    9. 编写一个函数 读取words.txt并构建一个列表,每个元素是一个单词,给这个函数编写2个版本,其中一个使用append方法,另一个使用t=t+[X]这样,那个运行时间更长?
      def word_list():
          fin = open("words.txt")
          r = []
          for i in fin:
              word = i.strip()
              r.append(word)
          return r
      
      def word_list2():
          r = []
          fin = open("words.txt")
          for i in fin:
              word = i.strip()
              r += [word]
          return r
      
      def count_time(fn):
          start = time.time()
          l = fn()
          end = time.time()
          print fn.__name__,"result",len(l), ",run ",end - start,"s"
      
      count_time(word_list)
      count_time(word_list2)
      
    10. 写一个函数 查找单词表中出现的反向词(一个单词是另外一个的反向序列)
      def make_word_list():
          word_list = []
          fin = open('words.txt')
          for line in fin:
              word = line.strip()
              word_list.append(word)
          return word_list
      word_list = make_word_list()
      def reverse_pair(wordlist,word):
          rev = word[::-1]
          return to_bisect(wordlist,rev)
      
      for word in word_list:
          if reverse_pair(word_list,word):
              print word,word[::-1]
      

    术语表

    • 列表(list):值的序列
    • 元素(element):列表或者其他序列中的一个值,也称为列表项
    • 下标(index):标明元素在列表中的位置的整数值
    • 嵌套列表(nested list):作为其他列表的元素的列表
    • 映射(mapping):一种关联,表示一个集合的每个元素和另外一个集合的元素如何对应。 例如,列表是从下标到元素的映射
    • 累加器(accumulator):在循环中用于加和或者累积某个结果的变量
    • 增加赋值(augmented assignment):使用类似+=操作符来更新变量值的语句
    • 化简(reduce):一种处理模式,便利一个序列,并将元素值累积起来计算为一个单独的结果
    • 映射(map):一种处理模式,遍历一个序列,对每个元素进行操作
    • 过滤(fliter):一种处理模式,便利列表,并选择满足某种条件的元素
    • 对象(Object):变量可以引用的东西,对象有类型和值
    • 相等(equivalent):拥有相同的值
    • 相同(identical):是同一个对象
    • 引用(reference):变量和它的值之间的关联
    • 别名(aliasing):多个变量同时引用一个对象的情况
    • 分隔符(delimiter):用于分割字符串的一个字符或字符串
  • 相关阅读:
    DOS命令:列出某目录下的所有文本文件名并重定向到某文件
    换掉Tomcat默认图标
    Html中的次方符号怎么写
    MySQL插值语句
    截短字符串的函数(JS中适用)
    使用grep进行文本查找
    使用sed进行文字替换
    Carrer Day有感
    Pinger2
    Pinger
  • 原文地址:https://www.cnblogs.com/iyueyao/p/4190003.html
Copyright © 2020-2023  润新知