精华内容
下载资源
问答
  • Python list可以做什么

    2017-07-18 16:11:00
    最近要回学校开始毕设了,准备个有关算法的,听说python运算好一些,特地来学一学。 先从基础开始啊………………………… 切片 取一个list的部分元素是非常常见的操作。 Python提供了切片(Slice)操作...

    最近要回学校开始做毕设了,准备做个有关算法的,听说python运算好一些,特地来学一学。

    先从基础开始啊…………………………

     

    切片

    取一个list的部分元素是非常常见的操作。

    Python提供了切片(Slice)操作符,能大大简化这种操作。

    取前3个元素,用一行代码就可以完成切片:

    L[0:3]

    L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。

    如果第一个索引是0,还可以省略:

    L[:3]

    也可以从索引1开始,取出2个元素出来:

    L[1:3]

    只用一个 : ,表示从头到尾:

    L[:]

    因此,L[:]实际上复制出了一个新list。

    切片操作还可以指定第三个参数:

     L[::2]

    第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。

     

    tuple同上。

     

    L[-1]是最后一个元素,用此做倒序切片。

    倒序切片包含起始索引,不包含结束索引。

     

    利用倒序切片对 1 - 100 的数列取出:

    * 最后10个数;

    * 最后10个5的倍数。

    L = range(1, 101)
    print L[-10:]
    print L[4::5][-10:]

     

    字符切片

    >>> 'ABCDEFG'[:3]
    'ABC'
    

     

    集合是指包含一组元素的数据结构,我们已经介绍的包括:
    1. 有序集合:list,tuple,str和unicode;
    2. 无序集合:set
    3. 无序集合并且具有 key-value 对:dict

    enumerate() 函数把:

    ['Adam', 'Lisa', 'Bart', 'Paul']

    变成了类似:

    [(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]
    使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。
    >>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
    >>> for index, name in enumerate(L):
    ...     print index, '-', name
    ... 
    0 - Adam
    1 - Lisa
    2 - Bart
    3 - Paul


    zip()函数可以把两个 list 变成一个 list:

    >>> zip([10, 20, 30], ['A', 'B', 'C'])
    [(10, 'A'), (20, 'B'), (30, 'C')]

     

    dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list

    dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样

    那这两个方法有何不同之处呢?

    1. values() 方法实际上把一个 dict 转换成了包含 value 的list。

    2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

    3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

    如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

     

    在一个 for 循环中,如何同时迭代 key和value。

    dict 对象的 items() 方法返回的值:

    >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
    >>> print d.items()
    [('Lisa', 85), ('Adam', 95), ('Bart', 59)]

    可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:

    >>> for key, value in d.items():
    ...     print key, ':', value
    ... 
    Lisa : 85
    Adam : 95
    Bart : 59

    和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

    d.ieteritems()

     

    列表生成式

    >>> L = []
    >>> for x in range(1, 11):
    ...    L.append(x * x)
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

    >>> [x * x for x in range(1, 11)]
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]



    字符串可以通过 % 进行格式化,用指定的参数替代 %s。字符串的join()方法可以把一个 list 拼接成一个字符串。

    如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:

    >>> [x * x for x in range(1, 11) if x % 2 == 0]
    [4, 16, 36, 64, 100]

    有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。

     

     isinstance(x, str) 可以判断变量 x 是否是字符串

     

    字符串的 upper() 方法可以返回大写的字母

     

    在列表生成式中,也可以用多层 for 循环来生成列表。

     

     

    转载于:https://www.cnblogs.com/6luv-ml/p/7201027.html

    展开全文
  • 原标题:Python学完可以做什么人工智能近年来极其火热,就业前景非常乐观,众多互联网企业兴起,越来越多的传统行业也开始使用人工智能分析,我们从招聘网站上面就可以看得出,人工智能相关的岗位越来越吃香,Python...

    原标题:Python学完可以做什么

    人工智能近年来极其火热,就业前景非常乐观,众多互联网企业兴起,越来越多的传统行业也开始使用人工智能分析,我们从招聘网站上面就可以看得出,人工智能相关的岗位越来越吃香,Python学完可以做什么?

    可以留校当老师,公司研发岗位,去人工智能实验室等。具体岗位有:数据挖掘工程师、下位机算法工程师、售前技术支持(商业智能方向)、行业研究员(股市)、科技公司的电气工程师、C/C++ 算法开发工程师等等。

    当然了,如果你原因,也可以做机械工程师,控制工程师等,主要还是看你在学校里偏重什么,如果你擅长编程的话,写算法去做软件工程师也很好。

    7db02792e74d492b937cd48b2d3f8052.jpeg

    那么,Python人工智能培训要学多久?如果是零基础,那么大家就要用心学了。人工智能又是一些比较虚和抽象的课程,需要培养数据分析和大局观念。

    你刚接触一定不会难,不然你就不学了,人工智能培训由浅入深,只要你下功夫,5个月完全没有问题。千锋Python学校等你来哦。

    有基础的学员,有计算机或者数学相关的经验,在学习上会更快一点,同时如果是有过python、机器学习等开发项目经验的人,也可以直接跳过基础部分的内容的学习,那么整体学习时间上就会比零基础的学习者少一些。

    对于零基础的学员或者说自学能力比较差的,还是需要参加线下的Python人工智能工程师培训,这样才能够更好地掌握。自学只适合有一定的基础,或者自学能力比较强的人,而我们大多数人还是需要通过参加为期5个多月的人工智能学习才能学会。返回搜狐,查看更多

    责任编辑:

    展开全文
  • 开始刷leetcode算法题 今天的是"买卖股票的最佳时机”题目要求给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次...

    开始刷leetcode算法题 今天做的是"买卖股票的最佳时机”

    题目要求

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

    设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

    注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

    看到这个题目 最初的想法是蛮力法

    通过两层循环 不断计算不同天之间的利润及利润和

    下面上代码

    class Solution(object):

    def maxProfit(self, prices):

    """

    :type prices: List[int]

    :rtype: int

    """

    self.allbuy1 = [] #单次买卖的差值数组 (可能为负)

    self.allbuy2 = [] #所有可能买卖的利润数组 (可能为负)

    # allbuy1和allbuy2的区别为一个是单次买卖 一个是多次买卖和

    self.curbuy(prices,0,0) #prices 为价格表 0:初始 0:

    #print(self.allbuy1)

    #print(self.allbuy2)

    return self.picBigest(self.allbuy2)

    def buyticket(self,prilist,a,b): #list:放入的价格数组 a:上一次买入的价格 b:今天卖出的价格

    return prilist[b] -prilist[a] #返回 赚取得价格

    def curbuy(self,plist,x,result): #plist:价格数组 x:当天的数组坐标 result: 利润

    obj=result #固定上一次的价格 保存为上一个递归

    lens=len(plist) #天数

    for i in range(x,lens-1):

    for j in range(i+1,lens):

    temp=self.buyticket(plist,i, j)

    self.allbuy1.append(temp)

    self.allbuy2.append(temp) #单次利润放入数组

    result = obj + temp #将之前的利润加上今天的利润

    if(x>=2): #如果买入是第2+1天以后 则可以加上之前的利润

    self.allbuy2.append(result) #多次买卖利润放入数组

    self.curbuy(plist,j+1,result) #递归 j+1:卖出的后一天 result:利润

    def picBigest(self,reslist):

    big=0

    for i in reslist:

    if (i>big):

    big=i

    print(big)

    return big

    if __name__ == '__main__':

    test=Solution()

    prices = [5,7,3,8] # 输入的每日股票数组

    test.maxProfit(prices)

    分析:

    这个代码理解起来简单 就是将所有可能都放入数组中 找出最大一个可能

    将这个代码提交时 显示 超出时间限制 确实 如果输入的数组长度非常大时 计算量巨大 出现错误

    ——————————————————————————————————————————————————————————————————————————————

    更换思路:利用贪心算法解决此事

    首先介绍 一下贪心算法: 对问题只对当前情况进行最优解处理,之后发生什么对之前的决定都不改变。简单的说就是一个局部最优解的过程

    介绍个例子就明白了: 找零钱问题

    假设有面值为5元、2元、1元、5角、2角、1角的货币,需要找给顾客4元6角现金,为使付出的货币的数量最少

    首先找出小于4元6角的最大面值(2元)

    其次找出小于2元6角的最大面值(2元)

    接着找出小于6角的最大面值(5角)

    最后找出小于1角的最大面值(1角) ---付出4张纸币

    介绍完了贪心算法简单思想 就利用该方法解决对应问题

    在已知股票价格走势情况下 只需要对下一天进行判断 如果涨了 则买 如果跌了则卖 这样收益会保持固定增长

    当然了 有人会提出 我可以选择不卖等几天再卖 或不买等几天再买 的方式 一样可以保持增长 但是如图

    201975144753719.png?201965144820

    如果在第2天买入 3天卖出 4天买入 5天卖出 收益为A+B

    如果在第2天买入 5天卖出 收益为 C

    明显得出A+B大于C 所以贪心法在这种情况非常适用并且肯定得到最优解

    直接上代码

    class Solution(object):

    def maxProfit(self, prices):

    profit = 0

    for day in range(len(prices)-1):

    differ = prices[day+1] - prices[day]

    if differ > 0:

    profit += differ

    return profit

    if __name__ == '__main__':

    test=Solution()

    prices = [5,7,3,9] # 输入的每日股票数组

    print(test.maxProfit(prices))

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

    本文标题: python买卖股票的最佳时机(基于贪心/蛮力算法)

    本文地址: http://www.cppcns.com/jiaoben/python/264722.html

    展开全文
  • 开始刷leetcode算法题 今天的是"买卖股票的最佳时机”题目要求给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次...

    开始刷leetcode算法题 今天做的是"买卖股票的最佳时机”

    题目要求

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

    设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

    注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

    看到这个题目 最初的想法是蛮力法

    通过两层循环 不断计算不同天之间的利润及利润和

    下面上代码

    1 classSolution(object):2 defmaxProfit(self, prices):3 """

    4 :type prices: List[int]5 :rtype: int6 """

    7

    8 self.allbuy1 = [] #单次买卖的差值数组 (可能为负)

    9 self.allbuy2 = [] #所有可能买卖的利润数组 (可能为负)

    10 #allbuy1和allbuy2的区别为一个是单次买卖 一个是多次买卖和

    11 self.curbuy(prices,0,0) #prices 为价格表 0:初始 0:

    12 #print(self.allbuy1)

    13 #print(self.allbuy2)

    14 returnself.picBigest(self.allbuy2)15 def buyticket(self,prilist,a,b): #list:放入的价格数组 a:上一次买入的价格 b:今天卖出的价格

    16 return prilist[b] -prilist[a] #返回 赚取得价格

    17

    18 def curbuy(self,plist,x,result): #plist:价格数组 x:当天的数组坐标 result: 利润

    19 obj=result #固定上一次的价格 保存为上一个递归

    20 lens=len(plist) #天数

    21 for i in range(x,lens-1):22 for j in range(i+1,lens):23 temp=self.buyticket(plist,i, j)24 self.allbuy1.append(temp)25 self.allbuy2.append(temp) #单次利润放入数组

    26 result = obj + temp #将之前的利润加上今天的利润

    27 if(x>=2): #如果买入是第2+1天以后 则可以加上之前的利润

    28 self.allbuy2.append(result) #多次买卖利润放入数组

    29 self.curbuy(plist,j+1,result) #递归 j+1:卖出的后一天 result:利润

    30

    31 defpicBigest(self,reslist):32 big=033 for i inreslist:34 if (i>big):35 big=i36 print(big)37 returnbig38

    39 if __name__ == '__main__':40 test=Solution()41 prices = [5,7,3,8] #输入的每日股票数组

    42 test.maxProfit(prices)

    分析:

    这个代码理解起来简单 就是将所有可能都放入数组中 找出最大一个可能

    将这个代码提交时 显示 超出时间限制 确实 如果输入的数组长度非常大时 计算量巨大 出现错误

    ——————————————————————————————————————————————————————————————————————————————

    更换思路:利用贪心算法解决此事

    首先介绍 一下贪心算法: 对问题只对当前情况进行最优解处理,之后发生什么对之前的决定都不改变。简单的说就是一个局部最优解的过程

    介绍个例子就明白了: 找零钱问题

    假设有面值为5元、2元、1元、5角、2角、1角的货币,需要找给顾客4元6角现金,为使付出的货币的数量最少

    首先找出小于4元6角的最大面值(2元)

    其次找出小于2元6角的最大面值(2元)

    接着找出小于6角的最大面值(5角)

    最后找出小于1角的最大面值(1角) ---付出4张纸币

    介绍完了贪心算法简单思想 就利用该方法解决对应问题

    在已知股票价格走势情况下 只需要对下一天进行判断 如果涨了 则买 如果跌了则卖 这样收益会保持固定增长

    当然了 有人会提出 我可以选择不卖等几天再卖 或不买等几天再买 的方式 一样可以保持增长 但是如图

    1587522-20190123143722073-1936244806.png

    如果在第2天买入 3天卖出 4天买入 5天卖出 收益为A+B

    如果在第2天买入 5天卖出 收益为 C

    明显得出A+B大于C 所以贪心法在这种情况非常适用并且肯定得到最优解

    直接上代码

    1 classSolution(object):2 defmaxProfit(self, prices):3 profit =04 for day in range(len(prices)-1):5 differ = prices[day+1] -prices[day]6 if differ >0:7 profit +=differ8 returnprofit9 if __name__ == '__main__':10 test=Solution()11 prices = [5,7,3,9] #输入的每日股票数组

    12 print(test.maxProfit(prices))

    展开全文
  • 一、简介:推荐系统是最常见的数据分析应用之一,包含淘宝、豆瓣、今日头条都是利用推荐系统来推荐用户内容。推荐算法的方式分为两种,一种是根据用户推荐,一种是根据商品...本文会用python演示第一种算法,目标...
  • 【纯干货!!!】花费了整整3天,整理出来的全网最实用Python面试大全,一共30道题目+答案的纯干货,对于答主的...对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔。那么你了解...
  • 在这个项目中,我们输入一系列的原料组合,算法会返回它所猜测的这些原料所属哪一个国家的菜系。比如说,看到以下这些原料,你能想到它是怎样的菜系?原料: [姜黄, 蔬菜汤, 土豆, 玛萨拉, 馕...
  • Python什么可以做大数据分析?

    千次阅读 2018-10-10 13:59:48
    Python很适合大数据相关的分析,内置的C编译的模块能应对常见的操作,个别极端的算法建议用C重写相关模块。 Python本身的特点更多的是高效率的开发和简单的维护,速度交给C去吧,更多的问题其实出自写代码的人...
  • python 加密算法 我们中的许多人都使用密码管理器来安全地存储许多唯一的密码。 密码管理器的关键部分是主密码。 该密码可以保护所有其他密码,因此存在风险。 任何拥有它的人都可以假装成为你……任何地方! 自然地...
  • 算法 算法: 通过写代码告诉计算机确切的执行的步骤(或者某一个特定的任务)。 算法在处理信息,不断的从数据...确定性: 每行代码必须要明确意义(做什么) 可行性: 代码的每一步都是可以执行的的 算法的复杂度:...
  • 都说现在Python是非常值得学习的语言,但仍然有不少学员有疑问,学完后到底可以做什么?工资又能拿到多少呢?下面一起跟随小编来看看吧。  人工智能  Python由于简单易用,是人工智能领域中使用极其广泛的编程...
  • 都说现在Python是非常值得学习的语言,但仍然有不少学员有疑问,学完后到底可以做什么?工资又能拿到多少呢?下面一起跟随小编来看看吧。  人工智能  Python由于简单易用,是人工智能领域中使用极其广泛的编程...
  • 我第一次遇到这个问题是在线性拟合模型的时候,两条线性模型交汇于一点,只要求出交点就可以精确的求出影响转折点:(我觉得可能这个算法的应用都在这个领域吧) python中还没有能直接表示一条线的类型,因此我们...
  • 尽量使用了简单易懂的语言,代码也了充分的注释,觉得有帮助的小伙伴可以点个赞呀。 1、什么是贪婪算法 顾名思义,贪婪指的是总是做出当前最好的选择,只关注眼前利益,也就是说,它期望通过局部最优选择从而得到...
  • python语言中有算法

    2020-12-17 03:11:14
    了解算法之前,我们先看一下什么算法 定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在...
  • 先说结果,我尝试使用之前用二阶密码提取出来的特征回归模型,结果看起来是没什么用。不过我觉得整个的框架是ok的,到这里为止就算热身吧,之后可以开始正式的搞。 这里梳理一下过程和结构,结果可以忽略不计。 ...
  • 如果你在周末、有WIFI的房间里不知道做什么,不如学下Python吧。有了它,你可以什么都不需要! 基础需求篇:温饱与空虚  躺着赚钱 一位匿名知乎网友爆料用Python写了自动化交易程序,2年躺着赚了200万...
  • KNN算法可以说是最简单的分类算法,也是最常用的算法之一。KNN全称K Nearest Neighbors,意思是K个最近的邻居,其原理就是当预测到一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。 例如:...
  • Python 拥有简洁易用的语法,经验丰富的程序员可以通过简短的代码,实现非常丰富的功能。这也是脚本语言的特性之一。 近日,偶然看到 2020 年 5 月份新出的一本书籍《Python One-Liners》,书中展示了很多一行代码就...
  • 本节书摘来异步社区《Python机器学习——预测分析核心算法》一书中的第1章,第1.3节,作者:【美】Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.3 什么是集成方法 本书涵盖...
  • 事情是这样的,通过python的深度学习算法包去训练计算机模仿世界名画的风格,然后应用到另一幅画中,不多说直接上图! 这个是世界名画”毕加索的自画像“(我也不懂什么是世界名画,但是我会google呀哈哈),以...
  • Python 中间值求TopK算法 算法思想以下以找出TopK 的最大值为例,最小值的可以自己修改一下下就可以重点就是找出这个中间值如何...ok 我们明确我们做什么了 ,那介绍的python处理的topK 算法过程是怎么样的呢? ~~...
  • 之前我们了解过,用广度优先搜索,找出段数最少的路径,但是要找出最快的路径该怎么呢,为此我们可以用现在提到的算法,狄克斯特拉算法。 我们知道,狄克斯特拉算的辅助图形必须是有向无环加权图,这也就决定了该...
  • 考虑到学习知识的顺序及效率问题,所以后续的几种聚类方法不再详细讲解原理,也不再写python实现的源代码,只介绍下算法的基本思路,使大家对每种算法有个直观的印象,从而可以更好的理解函数中参数的意义及作用,而...
  • Otsu算法原理与python实现

    千次阅读 2020-05-10 17:24:27
    下面公式所涉及的是带权重的均值与方差,一开始我并不明白为什么要这样,还去查了关于带权重与不带权重计算均值或方差的区别,后面发现,应该是因为该算法的计算是基于概率分布,而概率分布意味着这是一个可以根据...
  • 算法,底层框架源码可能没有过多地要求必须要掌握的技能有:一、基础语法1 变量2 逻辑判断3 循环4 函数二、数据结构1 数字(加减乘除)2 字符串(一串字符)3 布尔 (真假)4 元组 (不能修改的列表)5 列表(Python...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 590
精华内容 236
关键字:

python算法可以做什么

python 订阅