一道题的分析

  经过长期的加班。忽然感觉好久没学习了,来一波!!

1.题目:"".join([c for c in reversed("123")])的输出

  该题考了三个知识点,虽然都是简单知识,但是得赞一下这个出题人。

  知识点一:reversed(),这个函数还有一个兄弟函数reverse(),它俩都能得到list对象的逆序结果,而且只是list下标逆序,而list的元素不进行排序。

         reversed()的用法如下:

 1 l = [12, 11, 22, 33, 44]
 2 a = reversed(l)
 3 print list(a)
 4 print list(a)
 5 
 6 # 输出是:
 7 # [44, 33, 22, 11, 12]
 8 # []
 9 # reversed方法得到的是一个暂时的值,而且只能在第一次遍历的时候拿到值,
10 # 之后就拿不到了
11 # 而且拿到的是下标逆序,11和12并没有进行排

       然而reverse()的用法就不是如此,而且效果不一致:

 1 l = [12, 11, 22, 33, 44]
 2 l.reverse()
 3 print (l)
 4 print (l)
 5 
 6 # 输出是:
 7 # [44, 33, 22, 11, 12]
 8 # [44, 33, 22, 11, 12]
 9 # 由此可见reverse方法的用法
10 # 而且该方法会对使用方法的list对象进行永久的下标逆序
11 # 和它兄弟一样,也只是下标逆序

      通过这俩兄弟,使我想到了另外俩兄弟: sort()和sorted(),他俩也一样,找到一篇文章,感觉对这些兄弟的描述很靠谱传送门

  sorted()是python的内置函数,并不是可变对象(列表、字典)的特有方法,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,
都将返回一个以列表为容器的返回值,如果是字典将返回键的列表  sort()是可变对象(字典、列表)的方法,无参数,无返回值,sort()会改变可变对象,因此无需返回值。sort()方法是可变对象独有的方法或者属性,
而作为不可变对象如元组、字符串是不具有这些方法的,如果调用将会返回一个异常。

   知识点二:使用for循环生成列表(元组)

1 a = (c for c in range(0, 10))
2 print tuple(a)
3 b = [d for d in range(0, 10)]
4 print b
5 
6 # 输出:
7 # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
8 # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

   知识点三:用来拼接字符串的函数:join()函数

                    这个比较基础,例子太多,就不举例说明了

  一道题覆盖的知识,有些都得翻书看,学无止境,学无止境。

                                                          上班去

                                                         --首席小学生

原文地址:https://www.cnblogs.com/hainan-zhang/p/5888820.html