python3函数复习

本文介绍了Python中函数的定义,特别是带星号和双星号的不定长参数,以及内置函数sorted()和enumerate()的使用。还展示了如何用哈希表解决两个数之和问题(twoSum)和三个数之和为0的问题(threeSum)。
摘要由CSDN通过智能技术生成

函数的定义
def functionname(attribute:attributetype,anotherarttribute)[->returntype] :

其中不定长参数,前面要加*,以元组的形式输入(tuple不可改变)
还有一种是加**,代表以字典存储
eg:
def printinfo( arg1, **vardict ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   print (vardict)
# 调用printinfo 函数
printinfo(1, a=2,b=3)

输出: 
1
{'a': 2, 'b': 3}

python的内置函数

1.sorted()可以针对任何可迭代对象
sort()是对数组进行的排序:list.sort()
eg:对字典的值进行排序:
array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
array = sorted(array,key=lambda x:x["age"])
print(array)
输出:[{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]
eg2:对不同的关键字进行升序降序排列:
d1 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl', 'score':28}, {'name':'christ', 'score':28}]
L=sorted(d1,lambda x:(-x['score'],x['name']))        //对成绩逆序排列
print(L)

2.enumerate()函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

seq = ['one', 'two', 'three']

for i, element in enumerate(seq):
print i, element
... 
0 one
1 two
2 three

9.4今日所学代码

question1:求两数的值等于所求的值,记录数组的下标并返回

采用hash表来求解

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        hash={}        //哈希表是一个字典
        for i,x in enumerate(nums):        //x=nums[i]
            if target-x in hash:
                return [hash[target-x],i]    //返回下标
            hash[x]=i                        //保存i和nums[i]
        

question2:三数求和为0,要求把这三个元素以数组的形式输出

class Solution(object):
    def threeSum(self, nums):
     n=len(nums)
     nums.sort()
     res=[]
     for i in range(n):
        if nums[i]>0:
            return res
        if i>0 and nums[i] == nums[i-1]:
            continue
        L,R=i+1,n-1
        while L<R:
            if nums[i]+nums[L]+nums[R] == 0:
                res.append([nums[i],nums[L],nums[R]])
                while L<R and nums[L] == nums[L+1]:L+=1
                while L<R and nums[R] == nums[R-1]:R-=1
                L+=1
                R-=1
            if nums[i]+nums[L]+nums[R] > 0:
                R-=1
            else:
                L+=1
     return res


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值