zoukankan      html  css  js  c++  java
  • Python 搞搞数据库 简单的SQLite操作前 之矩阵 matrix

    其中为了输入一些数据库量表,我不得不到官方网站里面去下载原来数据,然后导入到数据库中。

    可是发现官方网站给的数据是pdf的,即使是拷贝下来,也是行列不在一起的,这样对将数据整合到数据库中是比较麻烦的。

    为了不每条数据都一条一条地输入我想出了一个办法。

    要输入的数据分别在此pdf文档的348 页,349页。复制粘帖到文本文档里面是按照每行每行的。数据并不是按照列来的。即使是复制到libraoffice 中也不能。

    于是我想出了这个方法

    这是直接复制的结果:

    这是我们想要的排列组合,13行,3列 (下载地址:http://wenku.it168.com/d_000144410.shtml 分别位于348,349 页。两个表)

    然后,是经过我转换的代码方法如下:

    matrix1.py具体代码是:

     1 data_matrix = [(
     2 "Newfoundland and Labrador",
     3 "Prince Edward Island",
     4 "Nova Scotia",
     5 "New Brunswick",
     6 "Quebec",
     7 "Ontario",
     8 "Manitoba",
     9 "Saskatchewan",
    10 "Alberta",
    11 "British Columbia",
    12 "Yukon Territory",
    13 "Northwest Territories",
    14 "Nunavut"
    15 ),
    16 (
    17 512930,
    18 135294,
    19 908007,
    20 729498,
    21 7237479,
    22 11410046,
    23 1119583,
    24 978933,
    25 2974807,
    26 3907738,
    27 28674,
    28 37360,
    29 26745
    30 ),
    31 (
    32 370501.69,
    33 5684.39,
    34 52917.43,
    35 71355.67,
    36 1357743.08,
    37 907655.59,
    38 551937.87,
    39 586561.35,
    40 639987.12,
    41 926492.48,
    42 474706.97,
    43 1141108.37,
    44 1925460.18,
    45 )]
    46 
    47 temp_big = []
    48 for i in range(13):
    49    temp = []
    50    for x in data_matrix:
    51        temp.append(x[i]) 
    52    temp_big.append(temp)
    53 print temp_big
    54 #print zip(*data_matrix)

    以上方法,是参考我曾经写过的一篇讲义得来的:http://blog.csdn.net/spaceship20008/article/details/8316983 在

    5.1.4. Nested List Comprehensions 这个部分,还有更多内容,也在这个页面里面。这样就得到了里面的数据。

    其实,我还想过用读取文本文档,每行一个元素,然后添加到元组tuple中的。其实方法都差不多。这个最好的是直接复制就好了。当然,复制完成后,一定的Vim操作功底是有的,比如

    :行1,行2s/$/",/                          #这个是用来在行1和行2最末尾处换上", 的意思,上面有用到,

    或者可以使用ctrl + v 进入visual block,然后用 shift + i 进入全部插入状态。

    以上两种vim操作方式各有千秋吧。visual block不能用在行尾(如果行尾不齐的话,还是用命令行比较好)

    精髓之处在这里:

    只需要将上面的代码稍微改写一下:

    temp_big = []
    for i in range(13):
       temp = []
       for x in data_matrix:
           temp.append(x[i]) 
       temp_big.append(temp)
    print temp_big

    但是感觉,这样写并不节省变量。这样想是最简单的了。连续的append列表。

    所以,这里奉上最简单的使用方法!

    In the real world, you should prefer built-in functions to complex flow statements. The zip() function would do a great job for this use case:

    只需要

    就能得到结果

    与我们做的不同的是,zip(*data_matrix)得到的结果,内嵌的是tuple元组。不过不影响使用。

    看来build-in 函数zip是多么的有爱啊,哈哈~ 还有好多矩阵玩法,欢迎进入矩阵的世界 :)

  • 相关阅读:
    Android 网络加载动态库 .so
    利用input新类型,解决移动端原生实现日期时间联动问题,精确到分
    简单对React入个门-个人总结
    三种方式创建Angular的自定义服务
    Angular的自定义指令-个人总结
    利用Angular的自定义过滤器功能实现单词的首字母大写
    简单小例子带你明白Angular的MVVM思想
    Angular基础引导(1)
    JavaScript简单拖拽事件(鼠标跟随事件)
    简单数组去重
  • 原文地址:https://www.cnblogs.com/spaceship9/p/3032806.html
Copyright © 2011-2022 走看看