学习笔记——fromkeys()方法、python去重、map()函数、lambda表达式、格式化输出

学习目标:

1.操作字典之fromkeys()方法的使用

2.python四种方法实现去除重复元素

3.map()函数学习及lambda表达式学习

4.格式化输出及print格式化输出

学习内容:

1.fromkeys()方法的使用

  • fromkeys()方法从序列键和值设置为value来创建一个新的字典。

  • 语法

    dict.fromkeys(seq[ , value])
    
  • 参数

    • seq – 这是将用于字典的键准备的值的列表
    • value – 这是可选的,如果提供的话则值将被设置为这个值
  • 返回值
    此方法返回的是列表。

  • 例子
    下面的例子显示fromkeys()方法的使用。

#!/usr/bin/python
 
seq = ('name', 'age', 'sex')
 
dict = dict.fromkeys(seq)
print ("New Dictionary : %s" % str(dict))
 
dict = dict.fromkeys(seq, 10)
print ("New Dictionary : %s" % str(dict))

当我们运行上面的程序,它会产生以下结果:

New Dictionary : {'age': None, 'name': None, 'sex': None}
New Dictionary : {'age': 10, 'name': 10, 'sex': 10}

2.去除list重复元素:

  • 运用集合set()去除

       lis =[1,8,4,3,4,8,3,2,6,5,5,1]
       list(set(lis))
       print(list(set(lis)))
    

    运行以上程序,结果为:

     [1, 2, 3, 4, 5, 6, 8]
    
  • 运用fromkeys()方法

    lis =[1,8,4,3,4,8,3,2,6,5,5,1]
    lis_1 ={}.fromkeys(lis).keys()
    print(lis_1)
    

    运行以上程序,结果为:

    dict_keys([1, 8, 4, 3, 2, 6, 5])
    

以上两种方法有可能会改变输出顺序

  • 用遍历的方法

    lis =[1,8,4,3,4,8,3,2,6,5,5,1]
    lis_2 =[]
    for i in lis:
        if i not in lis_2:
            lis_2.append(i)
    print(lis_2)
    

    运行以上程序,结果为:

    [1, 8, 4, 3, 2, 6, 5]
    
  • 运用sort()

    #法一:
    lis =[1,8,4,3,4,8,3,2,6,5,5,1]
    lis_3 =list(set(lis))
    lis_3.sort(key=lis.index)    #使用set()方法无法保证去重后的顺序,但是可以通过列表中索引(index)的方法保证顺序不变
    print(lis_3)
    #法二:
    lis_3=sorted(set(lis),key=lis.index)
    print(lis_3)
    

以上两种方法不改变排序

3.map()函数学习及lambda表达式学习

(1).map()函数

  • 描述
    map() 会根据提供的函数对指定序列做映射

    第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

  • 语法
    map() 函数语法:

    map(function, iterable, ...)
    
  • 参数
    function – 函数
    iterable – 一个或多个序列

  • 返回值
    Python 2.x 返回列表。

    Python 3.x 返回迭代器。

  • 实例
    以下实例展示了 map() 的使用方法:

     # Python2.x 实例
    >>> def square(x) :            # 计算平方数
    ...     return x ** 2
    ...
    >>> map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
    [1, 4, 9, 16, 25]
    >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
    [1, 4, 9, 16, 25]
    
    >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
    [3, 7, 11, 15, 19]
    
     # Python3.x 实例
    >>> def square(x) :         # 计算平方数
    ...     return x ** 2
    ...
    >>> map(square, [1,2,3,4,5])    # 计算列表各个元素的平方
    <map object at 0x100d3d550>     # 返回迭代器
    >>> list(map(square, [1,2,3,4,5]))   # 使用 list() 转换为列表
    [1, 4, 9, 16, 25]
    >>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))   # 使用 lambda 匿名函数
    [1, 4, 9, 16, 25]
    >>> 
    

(2).lambda表达式
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数

4.格式化输出及print格式化输出

(1). %的用法

  • 1、整数的输出
    %o —— oct 八进制
    %d —— dec 十进制
    %x —— hex 十六进制

    1 >>> print('%o' % 20)
    2 24
    3 >>> print('%d' % 20)
    4 20
    5 >>> print('%x' % 20)
    6 14
    
  • 2、浮点数输出

    • (1)格式化输出
      %f ——保留小数点后面六位有效数字
        %.3f,保留3位小数位
      %e ——保留小数点后面六位有效数字,指数形式输出
        %.3e,保留3位小数位,使用科学计数法
      %g ——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法
        %.3g,保留3位有效数字,使用小数或科学计数法

      1 >>> print('%f' % 1.11)  # 默认保留6位小数
       2 1.110000
       3 >>> print('%.1f' % 1.11)  # 取1位小数
       4 1.1
       5 >>> print('%e' % 1.11)  # 默认6位小数,用科学计数法
       6 1.110000e+00
       7 >>> print('%.3e' % 1.11)  # 取3位小数,用科学计数法
       8 1.110e+00
       9 >>> print('%g' % 1111.1111)  # 默认6位有效数字
      10 1111.11
      11 >>> print('%.7g' % 1111.1111)  # 取7位有效数字
      12 1111.111
      13 >>> print('%.2g' % 1111.1111)  # 取2位有效数字,自动转换为科学计数法
      14 1.1e+03
      
  • (2)内置round()

    round(number[, ndigits])
    
    • 参数:
      number - 这是一个数字表达式。
      ndigits - 表示从小数点到最后四舍五入的位数。默认值为0。

    • 返回值
      该方法返回x的小数点舍入为n位数后的值。

      round()函数只有一个参数,不指定位数的时候,返回一个整数,而且是最靠近的整数,类似于四舍五入,当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的情况时,如果要取舍的位数前的小数是奇数,则直接舍弃,如果是偶数则向上取舍。

      注:“.5”这个是一个“坑”,且python2和python3出来的接口有时候是不一样的,尽量避免使用round()函数吧

 1 >>> round(1.1125)  # 四舍五入,不指定位数,取整
 2 1
 3 >>> round(1.1135,3)  # 取3位小数,由于3为奇数,则向下“舍”
 4 1.113
 5 >>> round(1.1125,3)  # 取3位小数,由于2为偶数,则向上“入”
 6 1.113
 7 >>> round(1.5)  # 无法理解,查阅一些资料是说python会对数据进行截断,没有深究
 8 2
 9 >>> round(2.5)  # 无法理解
10 2
11 >>> round(1.675,2)  # 无法理解
12 1.68
13 >>> round(2.675,2)  # 无法理解
14 2.67
15 >>> 
  • 3、字符串输出
    %s
    %10s——右对齐,占位符10位
    %-10s——左对齐,占位符10位
    %.2s——截取2位字符串
    %10.2s——10位占位符,截取两位字符串
 1 >>> print('%s' % 'hello world')  # 字符串输出
 2 hello world
 3 >>> print('%20s' % 'hello world')  # 右对齐,取20位,不够则补位
 4 hello world
 5 >>> print('%-20s' % 'hello world')  # 左对齐,取20位,不够则补位
 6 hello world         
 7 >>> print('%.2s' % 'hello world')  # 取2位
 8 he
 9 >>> print('%10.2s' % 'hello world')  # 右对齐,取2位
10 he
11 >>> print('%-10.2s' % 'hello world')  # 左对齐,取2位
12 he        
  • 4、 其他
    (1)字符串格式代码

    (2)常用转义字符

(2). format用法

相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’

  • 位置匹配
    (1)不带编号,即“{}”
    (2)带数字编号,可调换顺序,即“{1}”、“{2}”
    (3)带关键字,即“{a}”、“{tom}”

     1 >>> print('{} {}'.format('hello','world'))  # 不带字段
     2 hello world
     3 >>> print('{0} {1}'.format('hello','world'))  # 带数字编号
     4 hello world
     5 >>> print('{0} {1} {0}'.format('hello','world'))  # 打乱顺序
     6 hello world hello
     7 >>> print('{1} {1} {0}'.format('hello','world'))
     8 world world hello
     9 >>> print('{a} {tom} {a}'.format(tom='hello',a='world'))  # 带关键字
    10 world hello world
    

    通过位置匹配
    通过名字匹配
    通过对象属性匹配
    通过下标或key匹配参数

  • 格式转换
    ‘b’ - 二进制。将数字以2为基数进行输出。
    ‘c’ - 字符。在打印之前将整数转换成对应的Unicode字符串。
    ‘d’ - 十进制整数。将数字以10为基数进行输出。
    ‘o’ - 八进制。将数字以8为基数进行输出。
    ‘x’ - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。
    ‘e’ - 幂符号。用科学计数法打印数字。用’e’表示幂。
    ‘g’ - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
    ‘n’ - 数字。当值为整数时和’d’相同,值为浮点数时和’g’相同。不同的是它会根据区域设置插入数字分隔符。
    ‘%’ - 百分数。将数值乘以100然后以fixed-point(‘f’)格式打印,值后面会有一个百分号。

     1 >>> print('{0:b}'.format(3))
     2 11
     3 >>> print('{:c}'.format(20))
     4 
     5 >>> print('{:d}'.format(20))
     6 20
     7 >>> print('{:o}'.format(20))
     8 24
     9 >>> print('{:x}'.format(20))
    10 14
    11 >>> print('{:e}'.format(20))
    12 2.000000e+01
    13 >>> print('{:g}'.format(20.1))
    14 20.1
    15 >>> print('{:f}'.format(20))
    16 20.000000
    17 >>> print('{:n}'.format(20))
    18 20
    19 >>> print('{:%}'.format(20))
    20 2000.000000%
    21 >>> 
    

(3).进阶用法

  • 进制转换

    >>> # format also supports binary numbers
    >>> "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42)
    'int: 42;  hex: 2a;  oct: 52;  bin: 101010'
    >>> # with 0x, 0o, or 0b as prefix:
    >>> "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42)  # 在前面加“#”,则带进制前缀
    'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'
    
  • 左中右对齐及位数补全
    (1)< (默认)左对齐、> 右对齐、^ 中间对齐、= (只用于数字)在小数点后进行补齐

    (2)取位数“{:4s}”、"{:.2f}"等

    >>> print('{} and {}'.format('hello','world'))  # 默认左对齐
    hello and world
    >>> print('{:10s} and {:>10s}'.format('hello','world'))  # 取10位左对齐,取10位右对齐
    hello      and      world
    >>> print('{:^10s} and {:^10s}'.format('hello','world'))  # 取10位中间对齐
      hello    and   world   
    >>> print('{} is {:.2f}'.format(1.123,1.123))  # 取2位小数
    1.123 is 1.12
    >>> print('{0} is {0:>10.2f}'.format(1.123))  # 取2位小数,右对齐,取10位
    1.123 is       1.12
    
    >>> '{:<30}'.format('left aligned')  # 左对齐
    'left aligned                  '
    >>> '{:>30}'.format('right aligned')  # 右对齐
    '                 right aligned'
    >>> '{:^30}'.format('centered')  # 中间对齐
    '           centered           '
    >>> '{:*^30}'.format('centered')  # 使用“*”填充
    '***********centered***********'
    >>>'{:0=30}'.format(11)  # 还有“=”只能应用于数字,这种方法可用“>”代替
    '000000000000000000000000000011'
    
  • 正负符号显示

    >>> '{:+f}; {:+f}'.format(3.14, -3.14)  # 总是显示符号
    '+3.140000; -3.140000'
    >>> '{: f}; {: f}'.format(3.14, -3.14)  # 若是+数,则在前面留空格
    ' 3.140000; -3.140000'
    >>> '{:-f}; {:-f}'.format(3.14, -3.14)  # -数时显示-,与'{:f}; {:f}'一致
    '3.140000; -3.140000'
    
  • 百分数%

    >>> points = 19
    >>> total = 22
    >>> 'Correct answers: {:.2%}'.format(points/total)
    'Correct answers: 86.36%'
    
  • 时间

    >>> import datetime
    >>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
    >>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
    '2010-07-04 12:15:58'
    逗号","分隔金钱,没以前进位
    
    >>> '{:,}'.format(1234567890)
    '1,234,567,890'
    
占位符嵌套

复制代码
>>> for align, text in zip('<^>', ['left', 'center', 'right']):
...     '{0:{fill}{align}16}'.format(text, fill=align, align=align)
...
'left<<<<<<<<<<<<'
'^^^^^center^^^^^'
'>>>>>>>>>>>right'
>>>
>>> octets = [192, 168, 0, 1]
>>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)
'C0A80001'
>>> int(_, 16)  # 官方文档给出来的,无法在IDLE复现
3232235521
>>>
>>> width = 5
>>> for num in range(5,12):
...     for base in 'dXob':
...         print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
...     print()
...
    5     5     5   101
    6     6     6   110
    7     7     7   111
    8     8    10  1000
    9     9    11  1001
   10     A    12  1010
   11     B    13  1011
- **占位符%s和%r**

```python
"""
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
conversion ::= "r" | "s" | "a"
这里只有三个转换符号,用"!"开头。
"!r"对应 repr();"!s"对应 str(); "!a"对应ascii()。
"""

>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
"repr() shows quotes: 'test1'; str() doesn't: test2"  # 输出结果是一个带引号,一个不带
format的用法变形
a.format(b)
>>> "{0} {1}".format("hello","world")
'hello world'


# f"xxxx"
# 可在字符串前加f以达到格式化的目的,在{}里加入对象,此为format的另一种形式:

>>> a = "hello"
>>> b = "world"
>>> f"{a} {b}"
'hello world'



name = 'jack'
age = 18
sex = 'man'
job = "IT"
salary = 9999.99

print(f'my name is {name.capitalize()}.')
print(f'I am {age:*^10} years old.')
print(f'I am a {sex}')
print(f'My salary is {salary:10.3f}')

# 结果
my name is Jack.
I am ****18**** years old.
I am a man
My salary is   9999.990

复制代码

学习时间:

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


学习产出:

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Lambda表达式Python中的一种匿名函数,它可以在一行代码中定义一个函数Lambda表达式通常用于简单的函数,它们可以作为参数传递给其他函数或作为返回值返回。 Lambda表达式的语法如下: lambda 参数列表: 表达式 其中,参数列表是用逗号分隔的形式参数,表达式是函数的返回值。 例如,下面的代码定义了一个简单的Lambda函数: f = lambda x: x * x 这个函数接受一个参数x,并返回x的平方。我们可以像调用普通函数一样调用它: print(f(5)) # 输出25 Lambda表达式还可以用于定义匿名函数,例如: g = lambda x, y: x + y 这个函数接受两个参数x和y,并返回它们的和。我们可以像调用普通函数一样调用它: print(g(2, 3)) # 输出5 总之,Lambda表达式Python中一种非常方便的函数定义方式,它可以让我们更加简洁地编写代码。 ### 回答2: Lambda表达式Python函数中的一种简洁方式,它可以定义在一行内的匿名函数。Lambda使用关键字“lambda”来表示,后面跟随一个或多个参数,分隔符为逗号,然后是冒号和一个表达式。返回值是该表达式的结果。 Lambda表达式的基本语法如下: lambda arguments: expression 其中arguments参数可以是0个、1个或多个参数,expression表达式是lambda函数的返回值。 Lambda表达式的使用场景比较广泛,通常用于函数式编程、过滤器(filter)、映射器(map)、排序器(sort)等操作中。 例如,我们可以使用lambda表达式来定义一个简单的函数: x = lambda a : a + 10 print(x(10)) # 输出结果为20 上述例子中,lambda表达式定义了一个参数“a”,表达式为“a+10”,即函数返回值为传入参数a加上10。 当需要对一个列表中的元素进行操作时,我们可以使用map函数结合lambda表达式来实现: lst = [1, 3, 5, 7] result_lst = list(map(lambda x:x*2, lst)) print(result_lst) # 输出结果为[2, 6, 10, 14] 上述例子中,lambda表达式定义了一个参数“x”,表达式为“x*2”,即将列表中的每个元素乘以2。map函数将该lambda表达式应用于lst中的每个元素,返回一个新的列表。 Lambda表达式比较适用于简单的函数定义和一些简单的操作,但对于较为复杂的任务或需要频繁使用的代码,建议还是使用函数进行定义。 ### 回答3: Python是一种广泛使用的编程语言,而函数Python编程的重要部分。在Python中,函数是一个特殊的代码块,可以接受一些输入(参数),并在执行一些操作后返回输出。其中,lambda表达式是定义函数的一种不同方式。 lambda表达式也被称为匿名函数,因为它们可以定义一个没有名称的函数。与普通函数不同,lambda函数只能包含一个表达式,而不是一条语句块。语法如下: lambda 参数: 表达式 下面是一个简单的例子: add = lambda x, y: x + y print(add(2, 3)) # 输出5 在这个例子中,lambda函数的定义是add = lambda x, y: x + y,其中参数是x和y,表达式是x + y。定义后,我们可以像使用普通函数一样使用它。 lambda函数有许多用途。其中之一是作为其他函数的参数,例如在sort()函数中进行排序。例如,我们可以使用lambda函数按照列表中每个元素的第二个元素进行排序。实现方式如下: a = [(1, 2), (4, 1), (9, 10), (13, -3)] a.sort(key=lambda x: x[1]) # 按每个元组的第二个元素进行排序 print(a) 输出结果为:[(13, -3), (4, 1), (1, 2), (9, 10)] 总之,Lambda表达式Python语言中一个十分有用的特性,它允许我们创建匿名函数,使代码变得更加简洁和易读。在实际编程中,可以将其用于诸如函数参数传递、过滤器、排序等许多编程任务中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值