给定一个数组和一个特定的数,使得数组中的两个数等于这个特定的数。找出这两个数的下标。
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
class Solution(object): #新建类Solution,使用object继承
def twoSum(self, nums, target): #定义方法twosum,self代表类的实例,在定义方法时是必须有的。
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
dic = dict() #利用python中的字典记录每个元素出现的位置,也就是其他语言的哈希表。
for index,value in enumerate(nums): #循环遍历字典中的对象,获得索引和值。
sub = target - value
if sub in dic:
return [dic[sub],index]
else:
dic[value] = index
字典说明
字典是由多个键及与其对应的值构成的键-值对组成。字典可以通过下面的方式创建:
phonebook={‘Alice’:'2341','Benth':'9201','Cecil':'3258'}
上面名字是键,电话号码是值。每个键与他的值之间用冒号(:)隔开,项之间用逗号(,)隔开,
整个字典用大括号{}括起来,字典中,键是唯一的,值不唯一。
dict函数,可以通过其他映射(比如其他字典)或(键,值)对儿的序列建立字典。
>>>items=[('name','Gumby'),('age',42)]
>>>d=dict(items)
>>>d
{'age':42,'name':'Gumpy'}
>>>d['name']
'Gumby'
dict函数也可以通过关键字参数来创建字典
>>>d=dict(name='Gumby',age=42)
>>>d{'age':42,'name':'Gumpy'}
enumerate()说明
- enumerate()是python的内置函数
- enumerate在字典上是枚举、列举的意思
- 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
- enumerate多用于在for循环中得到计数
-
例如对于一个seq,得到:
(0, seq[0]), (1, seq[1]), (2, seq[2])
- 1
- enumerate()返回的是一个enumerate对象,例如:
enumerate()使用
- 如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
list1 = ["这", "是", "一个", "测试"]
for i in range (len(list1)):
print i ,list1[i]
- 上述方法有些累赘,利用enumerate()会更加直接和优美:
- list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1):
print index, item
>>>
0 这
1 是
2 一个
3 测试
- enumerate还可以接收第二个参数,用于指定索引起始值,如:
list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1, 1): print index, item >>> 1 这 2 是 3 一个 4 测试