mengban

mengban's homepage


  • 首页

  • 标签

  • 分类

  • 归档

python函数定义及形参实参

发表于 2018-09-10 | Edited on 2018-10-05 | 分类于 python学习
Symbols count in article: 1.3k | Reading time ≈ 2 mins.

1.python中函数的定义.

{.line-numbers}
1
2
3
def funcname(par1,par2):
pass
return

2.在函数体内修改形参会影响实参吗?

  • 如果是数字 字符串或者元组,本身就是不可变的,修改形参对函数外的实参也没有影响。
  • 如果是列表 list或者字典,那么修改参数内容后,实参的内容也会做出相应改变。
    注:修改指修改参数对象内部的值,不包括赋值。赋值是不影响函数体外的对象的。这里和C++是不一样的。
    {.line-numbers}
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    def func(num) :
    num[0]+=1
    print('num id:',id(num))
    print('num is:',num)
    print(' l id :',id(l))
    print(' l is:',l)

    num = [2,3,4,5]
    print('num id:',id(num))
    print('num is:',num)
    print(' l id :',id(l))
    print(' l is:',l)
    l = [1,2,3,4]
    func(l)
    #num id: 2278800263240
    #num is: [2, 2, 3, 4]
    # l id : 2278800263240
    # l is: [2, 2, 3, 4]
    #num id: 2278800264328
    #num is: [2, 3, 4, 5]
    # l id : 2278800263240
    # l is: [2, 2, 3, 4]


    def foo(dic_) :
    #dic_['key'] = 'value2' # TypeError: 'set' object does not support item assignment
    print(id(dic_))
    print(id(dic))
    dic = {'key','value1'}
    foo(dic)
    # 2278811127880
    # 2278811127880

3. python定义可变参数

  • 1 形式1
    {.line-numbers}
    1
    2
    3
    4
    5
    6

    def foo(*params) :
    # params 在函数里是元组
    print(params,type(params))
    foo(1,2,3)
    # (1, 2, 3) <class 'tuple'>
  • 2 形式2
    {line-numbers}
    1
    2
    3
    4
    5
    def foo(**params) :
    # params在函数里是字典
    print(params,type(params))
    foo(x=1,y=2,z=3)
    # {'x': 1, 'y': 2, 'z': 3} <class 'dict'>

python-向量处理

发表于 2018-09-06 | Edited on 2019-02-24 | 分类于 python学习
Symbols count in article: 1.5k | Reading time ≈ 3 mins.
  • 1.向量堆叠。

    {.line-numbers}
    1
    2
    3
    4
    5
    6
    x = [1,2,3,1]
    m_v = np.vstack([x,x])
    #array([[1, 2, 3, 1],
    # [1, 2, 3, 1]])
    m_h = np.hstack([x,x])
    #array([1, 2, 3, 1, 1, 2, 3, 1])
  • 2.获取numpy array 数组的最值及其索引。

    {.line-numbers}
    1
    2
    3
    4
    5
    6
    7
    8
    ret = np.where(m_v == np.min(m_v))
    print(ret)
    #(array([0, 1], dtype=int64), array([0, 0], dtype=int64))
    # tuple 类型数据
    ret[0]
    #array([0, 1], dtype=int64)
    ret[0][1]
    #1
  • 3.numpy 的axis机制
    以np.sum()为例:234的输入 指定在维度axis上进行求和 得到的输出会不会再有该axis。
    如np.sum(b,axis = 0)后的shape为3*4

    {.line-numbers}
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    >>> a = np.linspace(1,24,num=24)
    >>> a.reshape((2,3,4))
    array([[[ 1., 2., 3., 4.],
    [ 5., 6., 7., 8.],
    [ 9., 10., 11., 12.]],

    [[13., 14., 15., 16.],
    [17., 18., 19., 20.],
    [21., 22., 23., 24.]]])
    >>> a
    array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,
    14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24.])
    >>> b = a.reshape((2,3,4))
    >>> b
    array([[[ 1., 2., 3., 4.],
    [ 5., 6., 7., 8.],
    [ 9., 10., 11., 12.]],

    [[13., 14., 15., 16.],
    [17., 18., 19., 20.],
    [21., 22., 23., 24.]]])
    >>> np.sum(b,axis = 0)
    array([[14., 16., 18., 20.],
    [22., 24., 26., 28.],
    [30., 32., 34., 36.]])
    >>> np.sum(b,axis = 1)
    array([[15., 18., 21., 24.],
    [51., 54., 57., 60.]])
    >>> np.sum(b,axis = 2)
    array([[10., 26., 42.],
    [58., 74., 90.]])
  • 4 numpy.reshape
    np.reshape(x,(H,W,-1))
    其中-1表示自动推断

python-list相关

发表于 2018-09-03 | Edited on 2018-09-07 | 分类于 python学习
Symbols count in article: 557 | Reading time ≈ 1 mins.

1.python list删除的四种方式。

1. 使用del。

1
2
3
a = [1,2,3,4,5]
del a
del a[0]

2.使用pop。

{.line-numbers}
1
2
3
a = [1,2,3,4,5]
a.pop() ##默认pop最后一个元素
a.pop(0)

3.使用remove。

{.line-numbers}
1
2
a = [1,2,3,4,5]
a.remove(3) # 删除值为3的元素 当有多个3 只删第一个3。
  • pop与remove的区别是 pop根据脚标删除,remove根据元素的值进行删除。

4.使用切片的方式。

{.line-numbers}
1
2
3
4
a = [1,2,3,4,5]
a = a[::2]
print(a)
1 3 5

2.python list的常用函数

{.line-numbers}
1
2
a.index(2)
# 1

3.list的复制

1.

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
11
a = [1,3,2,4]
b = a
b.pop(0)
print(a)
# [3,2,4]

a = [1,3,2,4]
b = a[:]
b.pop(0)
print(a)
# [1,3,2,4]

python步进切片

发表于 2018-09-02 | Edited on 2018-09-10 | 分类于 python学习
Symbols count in article: 801 | Reading time ≈ 1 mins.

切片操作对python中所有可以索引的对象都可以切片操作。
切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束,第三个数(冒号之后)表示切片间隔数。如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。

1.带步进正向切片

默认步进为1

{.line-numbers}
1
2
3
a = '123456789'
print(a[0:8])
'12345678'

指定步进

{.line-numbers}
1
2
print(a[0:8:2])
'1357'

带步进遍历

{.line-numbers}
1
2
print(a[::2]) 
'13579'

2.带步进反向切片

{.line-numbers}
1
2
3
b = [12,34,56,78,90]
print(b[::-1])
[90, 78, 56, 34, 12]
{.line-numbers}
1
2
print(b[::-2])
[90, 56, 12]

3.样例

元素 1 2 3 4 5
索引 None 0 1 2 3 4 None
索引 None -5 -4 -3 -2 -1 None
{.line-numbers}
1
2
3
4
5
6
7
8
9
a = [1,2,3,4,5]
print(a[0:None:1])
1 2 3 4 5

print(a[-1:None:-1])
5 4 3 2 1

print(a[::-1])
5 4 3 2 1

seq [start: end: step]
有以下规律:

  • 元素有两个索引。
  • 含strat,不含end。
  • 步进1是左->右,-1是右->左。角标起始按照方向确定始终。
  • 两端各有None,也可作角标。

Momenta后记

发表于 2018-08-07 | Edited on 2018-08-16 | 分类于 心路
Symbols count in article: 996 | Reading time ≈ 2 mins.

Momenta World Cup比赛小结

北京时间2018.08.07 20:07

刚从五道口吃饭回来,到今天,二十多天的Momenta无人车足球赛算是告一段落,论文明天再写,先写此文做个小总结。
此次比赛规则很简单:类似于世界杯,双方各执一车,上下半场各20分钟,进球多者为胜者。
比赛物力&人力:

  • turtlebot3智能小车一台
  • 运算平台: 树莓派*2
  • 传感器:camera*2
  • 控制器与电机
  • 其他结构部件
  • 数据集:带标签图片10W张
  • 算力:每组TITANX * 8
  • 队友:程煜钧-北交博三 冯昊-清华大二 余唯民-清华大三 闫坤-北航大二 本人-北邮研一
    我扮演角色:类似酱油
    比赛结果:第五名

收获及感想:

1. 关于Momenta
这家公司真的技术好牛逼。
这家公司的Mentor真的好年轻。
这家公司真的好人性化。
这家公司福利真的好。
Dinner talker 分别见到了创始人旭东 Faster-RCNN作者 少卿。
旭东很年轻,但是有这个年龄不该有的深邃,无论是言谈与对话上。
少卿腼腆,书生气质很重。说话比较轻 谈起NN比较话多。
各种Mentor 其中底层至芯片代码,应用至NN的大牛 与我同龄。
拿过各种机器学习的冠军的李翔 比我大三年而已,问其本科事迹,10年已经在玩AI。那时我在写51。
总之 Momenta人才年轻 很有创造力 假以时日 定能执国内无人驾驶行业牛耳。

2. 关于自己
好菜。
真的好菜。
这次比赛,队里代码主要由低年级的小兄弟写的,我就在旁边给点how to的建议,想起自己大二那年全国电赛写无人机C代码了场景了,非常类似。
小兄弟们码力很强,至少比同时的我强。也让我认识到自己码力的不足,我比他们大三届啊 这三年我写都了啥代码?为何码力长进这么差?
这次深刻认识到了自己的不足之处 同龄的他们已经在Momenta做Mentor了 而我还在搬着砖。

3. 关于未来:
就要研二了,研三就要实习。充电时间就剩一年,到时如何让把自己卖出一个好价钱是个大问题。
研二Todolist:

  1. 刷算法。Java Python。提高码力。
  2. 刷Linux。熟悉生产环境。
  3. 多写blog 多做总结。
  4. 认真做事。每一件小事。
  5. 多刷leetcodee 年入百万。。。
  6. 看书。

xx

先这样吧

{.line-numbers}
1
#define TRUE FALSE

Hello World

发表于 2018-08-01 | Edited on 2018-08-05 | 分类于 demo
Symbols count in article: 430 | Reading time ≈ 1 mins.

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

123

博主

This is description

26 日志
15 分类
27 标签
GitHub
© 2019 mengban | 29k | 54 mins.
本站访客数: