【2021-03-18】
python的list基本操作(遍历、取下标)
获取list中指定元素的下标: list.index(value)
>>> a
[1, 3, 5, 9]
>>> a.index(9)
3
练习题,给定list,从里面获取到和为target的2个元素,并返回其下标
程序1:
def get_idx(nums, target): for n in nums: if ((target - n) in nums): return nums.index(n), nums.index(target - n) if __name__ == "__main__": nums = [1, 3, 7, 9, 12, 15] target = 16 print(get_idx(nums, target))
执行结果 (0, 5)
程序2
def get_idx2(nums, target): for i in range(0, (len(nums) - 1)): for j in range((i+1), len(nums)): if (nums[i] + nums[j] == target): return i,j if __name__ == "__main__": nums = [1, 3, 7, 9, 12, 15] target = 16 print(get_idx2(nums, target))
这里用到了list的遍历2种方法:
for n in nums: 很显然这种方法更方便
for i in range(0, len(nums)):
以及用到了获取list中指定元素的下标nums.index(target)这个方法
list的其他基本操作
list1.extend(list2) list在尾部追加另一个list2
list.append(n) list在尾部追加元素n
list.insert(idx, n) 在idx的下标处插入元素n
list.count(n) 在list中统计n出现的次数
list*2 list合并2次
list+list 相加和相乘,都是合并的效果
list.sort() 列表元素进行排序,reverse=True升序,reverse=False降序
del list[0] 删除list中下标为0的元素
list.pop(idx) 返回list中下标为idx的元素,并在list中删掉它
list.remove(value) 在list中删除值为value的元素
>>> a [1, 3, 5, 9] >>> b [2, 6, 8] >>> a.extend(b) 追加多个元素 >>> a [1, 3, 5, 9, 2, 6, 8] >>> a.append(100) 在尾部追加元素 >>> a [1, 3, 5, 9, 2, 6, 8, 100] >>> a.insert(0, -100) 在头部追加元素 >>> a [-100, 1, 3, 5, 9, 2, 6, 8, 100] >>> b ['hi'] >>> b=b*2 list相乘,得到合并的结果 >>> b ['hi', 'hi'] >>> a [-100, 1, 3, 5, 9, 2, 6, 8, 100] >>> b ['hi', 'hi'] >>> a+b list相加,得到合并的结果 [-100, 1, 3, 5, 9, 2, 6, 8, 100, 'hi', 'hi']
>>> a [-100, 1, 3, 5, 9, 2, 6, 8, 100] >>> a.sort() list元素进行排序,默认是升序 >>> a [-100, 1, 2, 3, 5, 6, 8, 9, 100] >>> a.sort(reverse=True) 反转=True表示降序 >>> a [100, 9, 8, 6, 5, 3, 2, 1, -100] >>> a.sort(reverse=False) >>> a [-100, 1, 2, 3, 5, 6, 8, 9, 100]
>>> a [1, 2, 3, 5, 6, 8, 9, 100] >>> a.pop(0) 返回下标为0的元素,并在list中删掉它 1 >>> a [2, 3, 5, 6, 8, 9, 100] >>> a [3, 5, 6, 8, 9, 100] >>> a.remove(3) 删掉value=3的元素 >>> a [5, 6, 8, 9, 100]
Q:python2和python3版本有什么差异?
Q:python里面的__init__.py有什么作用?缺少了会怎么样?
Q:*args, *kwargs有什么区别?
通过一个例子来看看吧~
def print_param(*args): print(args, type(args)) def print_param2(**kwargs): print(kwargs, type(kwargs)) if __name__ == "__main__": print_param(3, 4, 5) print_param2(a=3, b=4, c=5)
运行结果:
(3, 4, 5) <class 'tuple'>
{'a': 3, 'b': 4, 'c': 5} <class 'dict'>
可见type(args)是元组,是传入的所有参数放在元组中 (3, 4, 5)
而type(kwargs)是字典,把传入的参数以k-v形式放在字典中 {'a': 3, 'b': 4, 'c': 5}
所以一句话总结,前者是参数组成的元组,后者是参数组成的字典。
[2021-03-26]
str.isdigit()方法
str对象的方法,返回值True/False
使用方法:
>>> a '123' >>> b '123b' >>> >>> a.isdigit() True >>> b.isdigit() False
python的异常: raise
raise: 主动抛出异常
异常用法一:try/except
try: if b <= 0: raise ValueError("b <= 0") except Exception as e: print("{0} 引发异常".format(e)) raise
异常用法二: try/except/else
try: if b <= 0: raise ValueError("b <= 0") except Exception as e: print("{0} 引发异常".format(e)) raise else: #如果没有异常就执行else print(a//b)
异常用法三:try/except/finally
try: if b <= 0: raise ValueError("b <= 0") except Exception as e: print("{0} 引发异常".format(e)) raise else: print(a//b) finally: #无论有没有异常,都执行finally print("end")