精华内容
下载资源
问答
  • 在Python中,字典按值排序

    万次阅读 多人点赞 2018-09-06 15:37:28
    在Python中,字典按值排序 我们可以用sorted高阶函数或者用列表的.sort()方法。 目录 在Python中,字典按值排序 一、sorted高阶函数 二、列表的.sort()方法 三、扩展 四、后记 一、sorted高阶函数 这种...

    在Python中,字典按值排序

      我们可以用sorted高阶函数或者用列表的.sort()方法。

    目录

    在Python中,字典按值排序

    一、sorted高阶函数

    二、列表的.sort()方法 

    三、扩展

    四、后记


     

    一、sorted高阶函数

      这种方法更为简洁,更为推荐。

    d={'a':1,'c':3,'b':2}    # 首先建一个字典d
    
    #d.items()返回的是: dict_items([('a', 1), ('c', 3), ('b', 2)])
    
    d_order=sorted(d.items(),key=lambda x:x[1],reverse=False)  # 按字典集合中,每一个元组的第二个元素排列。
                                                               # x相当于字典集合中遍历出来的一个元组。
    print(d_order)     # 得到:  [('a', 1), ('b', 2), ('c', 3)]
    
    
    

    下面是sorted排序方法的详细解释:

    1. sorted高阶函数语法格式:  sorted(可迭代对象,key=函数名,reverse=False/True)

         作用:从可迭代对象中,依次取出一个元素,该元素再按照key规定的排列依据排序。

         可迭代对象:即可依次取值的对象,例如:集合,序列(列表,字符串,元组),字典等。

         key : 是列表排列的依据,一般可以自定义一个函数返回排序的依据,再把函数名绑定给key。

         reverse : 译为反转,reverse默认等于False,从小到大排序。等于True时,从大到小排序。

     

    2. 匿名函数lambda的格式:    函数名 = lambda  [形参1,形参2,...] :  ,返回操作语句块产生的结果并绑定给函数名。

    例如: key=lambda x : x[1]       

                x:相当于字典集合中的一个元组, 例:dict_items([('a', 1), ('c', 3), ('b', 2)])中的('a', 1)或('c', 3)或('b', 2)

                x[1]: 返回x中的第二个元素,即键值对元组中的值。dict_items([('a', 1), ('c', 3), ('b', 2)])中的1或2或3

    注意:

      (1) sorted函数中的可迭代对象不要用字典d,那样只能迭代出的字典d的键。要用d.items()才可迭代出字典的键值对。

        例:不能用 d_order=sorted(d,key=lambda x:x[1],reverse=False)

                要用 d_order=sorted(d.items(),key=lambda x:x[1],reverse=False)

      (2) sorted函数排好序后,要绑定一个对象(赋值),例:d_order=sorted(d.items(),key=lambda x:x[1],reverse=False).

         因为字典是无序类型,用sorted函数排好序后不绑定d_order,字典会自动打乱顺序。

     

     

    二、列表的.sort()方法 

    Python中的字典是无序类型,没有自己的排序方法。但可以用列表的.sort()方法来进行排序。

    我们首先要把字典转换为列表,再进行排序。

     例子:

    d={'a':1,'c':3,'b':2}    # 首先建一个字典d
    
    d.items()        # 得到: dict_items([('a', 1), ('c', 3), ('b', 2)])
    
    L=list(d.items())       # 得到列表: L=[('a', 1), ('c', 3), ('b', 2)]
    
    L.sort(key=lambda x:x[1],reverse=False)  # 按列表中,每一个元组的第二个元素从小到大排序。
                                             # x代表从L中遍历出的一个元组
    
    print(L)      # 得到:  [('a', 1), ('b', 2), ('c', 3)]

     注意:

     1.上面的例子中最要的一步就是:  L=list(d.items()),  即: L = list(dict_items([('a', 1), ('c', 3), ('b', 2)])

          用list()列表构造函数,将L= dict_items([('a', 1), ('c', 3), ('b', 2)]) 转变为列表,得到列表:  L=[('a', 1), ('c', 3), ('b', 2)] 。

          ps: 今天早上我折腾了好久才发现,list()构造函数竟然可以把 d.items()产生的dict_items键值对集合类型,直接变成列表,简直NB啊!

     2.再简单说一下列表的L.sort()方法:  L.sort(key=函数名,reverse=False/True)

         L.sort():会自动遍历列表中的元素,即依次取出一个元素。再以key绑定的函数为依据排序。

         例如: L.sort(key=lambda x:x[1],reverse=False)       #L=[('a', 1), ('c', 3), ('b', 2)]

                     从列表L中取出第一个元素('a', 1)元组,以元组的第二个元素'1'为排序依据,

                     再依次从列表中依次取出第二,第三,...个元素确定排序依据,

                     最后reverse=False,按从小到大的顺序排列。

         注: L.sort()内部还有其他参数,感兴趣的小伙伴可以用度娘搜一下。

     

    三、扩展:

    其实小c君是在用jieba库进行文本词频统计时,才遇到了给字典排序的这个问题。

    小伙伴们感兴趣的话可以看一下下面的代码,也可以自己找个文本试一下,非常有趣。

    import jieba
    with open("天龙八部-网络版.txt",'r',encoding='utf-8') as f:
        txt=f.read()
        words=jieba.lcut(txt)
        d={}
        for word in words:
            d[word]=d.get(word,0)+1
        del d[' ']
        del d['\n']
    with open("天龙八部-词语统计.txt",'w',encoding='utf-8') as f2:
        d=sorted(d.items(),key=lambda x:x[1],reverse=True)
        for x,y in d:
            f2.write("{}:{}\n".format(x,y))

    注:还可以优化代码,进行文本降噪。

     

    四、后记:

    今天折腾了一天,终于把字典排序的问题解决了。

    小c君的编程之路才刚开始,希望自己将来无论遇到何种挫折都不要轻言放弃,坚持下去,

    多挣点钱,

    娶新垣结衣。

     

    展开全文
  • Python中a += 1与a = a + 1有哪写区别?分析show me codepython中可变类型与不可变类型 在python中有a += 1和a = a + 1这两种赋值方法,二者的区别是什么 分析 首先python中变量名是变量的标签,因此重新赋值在...

    Python中a += 1与a = a + 1有什么区别?

    在python中有a += 1a = a + 1这两种赋值方法,二者的区别是什么

    分析

    首先python中变量名是变量的标签,因此重新赋值在某种意义上是标签的重新指向,而在a += 1a = a + 1两个问题上,更准确是说是对于不可变对象类型,是重新开辟空间,这个标签指向新的内存空间,对于可变对象类型,则是在原来内存上做操作。

    简言之:

    • 对于可变对象,a += 1 直接在原内存地址上操作a = a + 1开辟新的内存操作
    • 对于不可变对象,a += 1a = a + 1都是在新开辟的空间操作

    show me code

    # 不可变类型 +=
    >>> a = 1
    >>> id(a)
    1413313168
    >>> a += 1
    >>> id(a)
    1413313200
    
    # 不可变类型 =+ 
    >>> a = 1
    >>> id(a)
    1413313168
    >>> a = a+1
    >>> id(a)
    1413313200
    
    # 可变类型 +=
    >>> a = [1]
    >>> id(a)
    2183116152904
    >>> a += [1]
    >>> id(a)
    2183116152904
    
    # 可变类型 =+
    >>> a = [1]
    >>> id(a)
    2183116152904
    >>> a = a+[1]
    >>> id(a)
    2183116155400
    

    对于可变类型,+=内存地址没有改变,而对于不可变类型,内存地址增加了4个字节。而=+这种操作都是增加四个字节。

    python中可变类型与不可变类型

    在这里插入图片描述

    图片引自https://www.cnblogs.com/shiyublog/p/10809953.html

    更多Python数据科学相关见专题Python数据科学技能索引

    展开全文
  • python创建矩阵There is no specific data type in Python to create a matrix,... Python中没有特定的数据类型来创建矩阵,我们可以使用list列表来创建矩阵 。 Consider the below example, 考虑下面的示例, ma...

    python创建矩阵

    There is no specific data type in Python to create a matrix, we can use list of list to create a matrix.

    Python中没有特定的数据类型来创建矩阵,我们可以使用list列表来创建矩阵

    Consider the below example,

    考虑下面的示例,

    mat = [
      [10, 20, 30],
      [40, 50, 60],
      [70, 80, 80]
    ]
    
    

    It can be considered a 3x3 matrix, there are 3 rows and 3 columns in 'mat' matrix.

    可以认为是3x3矩阵,“ mat”矩阵中有3行3列。

    访问矩阵元素 (Accessing matrix elements)

    Just like matrix in C/C++, we can access the elements in Python also.

    就像C / C ++中的矩阵一样,我们也可以访问Python中的元素。

    Consider the below program,

    考虑下面的程序,

    # Python matrix creation
    mat = [
      [10, 20, 30],
      [40, 50, 60],
      [70, 80, 80]
    ]
    
    # printing the matrix
    print("mat: ", mat)
    
    # printing rows
    print("mat[0]: ", mat[0])
    print("mat[1]: ", mat[1])
    print("mat[2]: ", mat[2])
    
    # printing specific elements
    print("mat[0][0]: ", mat[0][0])
    print("mat[0][1]: ", mat[0][1])
    print("mat[0][2]: ", mat[0][2])
    print("mat[1][0]: ", mat[1][0])
    print("mat[1][1]: ", mat[1][1])
    print("mat[1][2]: ", mat[1][2])
    print("mat[2][0]: ", mat[2][0])
    print("mat[2][1]: ", mat[2][1])
    print("mat[2][2]: ", mat[2][2])
    
    # printing matrix using loop (matrix form)
    print("Matrix is: ")
    for i in range(3):
      for j in range(3):
        print(mat[i][j], end = " ")
      print() # prints new line
    
    

    Output

    输出量

    mat:  [[10, 20, 30], [40, 50, 60], [70, 80, 80]]
    mat[0]:  [10, 20, 30]
    mat[1]:  [40, 50, 60]
    mat[2]:  [70, 80, 80]
    mat[0][0]:  10
    mat[0][1]:  20
    mat[0][2]:  30
    mat[1][0]:  40
    mat[1][1]:  50
    mat[1][2]:  60
    mat[2][0]:  70
    mat[2][1]:  80
    mat[2][2]:  80
    Matrix is: 
    10 20 30 
    40 50 60 
    70 80 80 
    
    
    

    翻译自: https://www.includehelp.com/python/program-to-create-matrix.aspx

    python创建矩阵

    展开全文
  • 首先在Python中,没有变量,变量只是一个标签,与Java的引用一样,都类似于c/c++的指针, 只是指向一个内存,本身并不存有该值。 因为在Python中一切都是对象,所有变量都是标签。 所以 a= 1 b = 2 a,b = b,a ...

    发现Python中居然可以用
    a,b = b,a
    进行值的交换
    如果在c语言的基础上我感觉不容易理解,但是我是主学Java的人,所以我感觉比较容易理解。
    首先在Python中,没有变量,变量只是一个标签,与Java的引用一样,都类似于c/c++的指针,
    只是指向一个内存,本身并不存有该值

    因为在Python中一切都是对象,所有变量都是标签。
    所以

    a= 1
    b = 2
    a,b = b,a
    print('a = ' + str(a) + '\n'  + 'b = ' + str(b))
    

    结果:
    a = 2
    b = 1

    我自己也看了好多别人的解析。
    我自己的理解是:
    Python中变量只是一个标签,系统会为值分配内存空间,所以上面语句是先将“b值(2)”的地址赋给a变量,然后将“a值(1)”的地址赋给b变量,这样就完成了数据的交换。

    然后可能会有人疑问,如果按照上面的解释,先将上面b值地址赋给a的话,那a不就是引用到2,后面再将a值地址赋给b的话,这样b不还是2吗?

    其实我一开始也被这个问题困惑了好长时间,后来明白了,因为赋值号是从右往左的赋值,所以会先将右边的表达式算出来值,而用逗号连接起来的表达式会从左往右依次执行,所以上面在进行赋值的时候Python内部会处理成 a,b = 2,1 这样就完成了数据的交换。

    以上是我自己的分析,本人小白一枚,可能会有错的地方,希望大家纠正。
    转载请说明出处,谢谢。

    展开全文
  • 在Python中生成随机数

    千次阅读 2018-05-09 16:29:12
    #python中利用random获取一个0到1的随机浮点数 a = random.random() print(a) #python中利用random获取一定范围内的(10到20)的随机浮点数 b = random.uniform(10,20) print(b) #python利用random获取一定范围内...
  • 如何在Python中调用MATLAB

    万次阅读 多人点赞 2018-03-21 10:16:28
    鉴于实验内容需要,不得不找点办法MATLAB和Python之间建个接口,从Python中调用MATLAB脚本或者是MATLAB的函数。内容不是很难,毕竟现成的接口已经有了,这儿记录一下API使用的一些事项。 注:本篇使用的是...
  • 1、在python中矩阵维度, (a,)和 a 有什么区别? 测试: import numpy as np trainx = np.linspace(-1, 1, 10) print(trainx.shape) print(trainx[0].shape) print(*trainx.shape) 输出:(10,) 和 (), ...
  • python列表随机选择Python random module provides an inbuilt method choice() has an ability to select a random item from the list and other sequences. Using the choice() method, either a single random...
  • Python 调用shell命令其中命令参数为python脚本的变量 举例:  shell的脚本: t.sh内容: echo "this is a test shell with arguments" echo "arg1 = $1; ar
  • 在Python中使用XGBoost

    千次阅读 2017-01-08 08:07:10
    下面将介绍XGBoost的Python模块,内容如下:  * 编译及导入Python模块  * 数据接口  * 参数设置  * 训练模型l  * 提前终止程序  * 预测 ...A walk through python example for UCI Mu
  • python: python中a+=b与a=a+b有什么区别

    千次阅读 2018-04-04 10:55:42
    就是python中a+=b与a=a+b有什么区别链接: http://stackoverflow.com/questions/6951792/python-a-b-not-the-same-as-a-a-b总体上讲,a+=b是改变了a原始的值,而a=a+b是计算出a+b后,a在指向那个值。这个也跟a和b的...
  • XGBoost:在Python中使用XGBoost

    万次阅读 多人点赞 2015-07-06 11:27:44
    在Python中使用XGBoost下面将介绍XGBoost的Python模块,内容如下: * 编译及导入Python模块 * 数据接口 * 参数设置 * 训练模型l * 提前终止程序 * 预测A walk through python example for UCI Mushroom ...
  • python中如何B.py调用A.py中的函数

    千次阅读 2018-05-21 15:25:09
    A.py文件的内容#!/usr/bin/env python3 # -*- coding: utf-8 -*- def add(x,y): print('和为:%d'%(x+y))B.py文件#!/usr/bin/env python3 # -*- coding: utf-8 -*- from A import add add(1, 2)
  • python列表查找值Hi Folks! In this article, we will have a look at the various ways to find the average... 在本文,我们将介绍在Python List查找列表平均值的各种方法 。 In general, an average is a va...
  • 在Python中增加和插入元素

    千次阅读 2017-04-21 13:37:38
    在Python中append 用来向 list 的末尾追加单个元素,如果增加的元素是一个list,那么这个list将作为一个整体进行追加。 例如: Python代码 li=['a', 'b']  li.append([2,'d'])  li.append('e')  #输出为:...
  • 在python中排序元组

    万次阅读 2014-11-04 09:48:29
    In Python you can sort with a tuple. It's best illustrated with a simple example: >>> items = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')] >>> sorted(items) [(0, 'B'), (0, 'a'), (1, 'A'), (1,
  • Python中a,b=a,a+b和a=b,b=a+b的区别

    千次阅读 2018-06-03 16:38:02
    最近学习Python的时候遇到的一个问题,问题还是早点解决为好,特此记录。#coding=gbk #a,b=b,a+b的情形 a=0 b=1 a,b=b,a+b #先计算第一个‘=’... #将右边的值赋予给左边的值,所以a,b都是1 print(a,b) #输出1,1 ...
  • python 复制替换文件The python language provides a built-in module "shutil", which offers numerous high-level operations on files and collections of files. In particular, functions are provided to ...
  • python 读取浮点数To take input in Python, we use input() function, it asks for an input from the user and returns a string value, no matter what value you have entered, all values will be considered ...
  • Protobuf在Python中的使用

    万次阅读 2014-05-28 10:44:04
    Protobuf在Python中的使用 本文原创自esbat的博客,转载请注明出处 protocol buffer的安装 $ wget http://protobuf.googlecode.com/files/protobuf-2.4.0a.tar.gz $ tar zxvf protobuf-2.4.0a.tar.gz $ cd protobuf...
  • 在python的程序设计,输出含有双引号的字符串: a="Albert Einstein once said," b="A person who never made a mistake never tried anything new." full=a+"\""+b+"\"" print(full) full=a+'"'+b+'"' print...
  • ![学习视频和我网上编译的效果](https://img-ask.csdn.net/upload/201910/28/1572238432_916765.png) %a是什么意思?...C/C++里面%a,%A代表 读入一个浮点值(仅C99有效),那么pyhton又是什么意思呢?
  • 在python里你可以对一个元组进行排序。例子是最好的说明: >>> items = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')] >>> sorted(items) [(0, 'B'), (0, 'a'), (1, 'A'), (1, 'B'), (2, '...
  • df_A,df_B都有一列‘col',为了把df_A中col列元素也df_B的找到,先写了 lst = list(df_B['col']) df_A.loc[ df_A.apply(lambda line: line['col'] in lst) ] 但这运行速度非常慢。   pandas有个函数is...
  • 在python中如何读写txt文本文档

    万次阅读 2018-01-24 18:40:41
    在python中读写TXT文本文件  使用python内置的open函数 打开txt文件  open(object,mode)函数   object:要打开文件的名称  mode:选择打开文件的方式  w:只能操作写入 r:只能读取 a:...
  • python中a.any()以及&&,||

    千次阅读 2019-06-13 19:06:55
    与||,在python中是没有这两个运算符的,取而代之的是英文的and和or。其他的运算符则没有发生变动。 a.any()函数的官方解释是: Test whether any elements of an array evaluate to True along an axis。 也就是说...
  • python3 列表长度In this article, we will be unveiling techniques to find the length of a Python list. Finding the length actually means fetching the count of data elements in an iterable. 本文,...
  • XGBoost原理及在Python中使用XGBoost

    千次阅读 2016-08-16 14:34:37
    在Python中使用XGBoost 下面将介绍XGBoost的Python模块,内容如下:  * 编译及导入Python模块  * 数据接口  * 参数设置  * 训练模型l  * 提前终止程序  * 预测 A walk through pyth

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,520
精华内容 14,608
关键字:

在python中a

python 订阅