记录几个特别有意思的python练习题

@

1.反转列表

[0,1,2,3,4,5,6,7][::-1]

2.从列表 [True,1,0,‘x’,None,‘x’,False,2,True] 中删除元素‘x’

>>> a = [True,1,0,'x',None,'x',False,2,True]
>>> for i in range(a.count('x')):
	a.remove('x')
>>> a
[True, 1, 0, None, False, 2, True]

3. 删除列表中索引号为奇数(或偶数)的元素。

>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> del a[::2]
>>> a
[1, 3, 5, 7, 9]
>>> a = list(range(10))
>>> del a[1::2]
>>> a
[0, 2, 4, 6, 8]

4. 若 a = [1,2,3],令 b = a,执行 b[0] = 9, a[0]亦被改变。为何?如何避免?

>>> a = [1,2,3]
>>> b = a
>>> id(a) == id(b) # 对象a和对象b在内存中是同一个,所以会出现关联
True
>>> b = a.copy() # 正确的做法是复制一个新的对象
>>> id(a) == id(b)
False

5.将二维结构 [[‘a’,1],[‘b’,2]] 和 ((‘x’,3),(‘y’,4)) 转成字典。

>>> dict([['a',1],['b',2]])
{'a': 1, 'b': 2}
>>> dict((('x',3),('y',4)))
{'x': 3, 'y': 4

6.将 0.00774592 和 356800000 格式化输出为科学计数法字符串。

>>> '%E, %e'%(0.00774592, 356800000)
'7.745920E-03, 3.568000e+08'

7.将字符串 ‘10100’ 按照二进制、八进制、十进制、十六进制转为整数.

>>> int('10100', base=2)
20
>>> int('10100', base=8)
4160
>>> int('10100', base=10)
10100
>>> int('10100', base=16)
65792

8.判断给定的参数 x 是否是整形。

>>> x = 3.14
>>> isinstance(x, int) # 还可以用来判断是不是列表数组哇
False
>>> x = list()
>>> isinstance(x, (list,tuple))
True

9.找到列表 [8,5,2,4,3,6,5,5,1,4,5] 中出现最频繁的数字以及出现的次数。

>>> a = [8,5,2,4,3,6,5,5,1,4,5]
>>> v_max = max(set(a),key=a.count)
>>> v_max
5
>>> a.count(v_max)
4

10.将二维列表 [[1], [‘a’,‘b’], [2.3, 4.5, 6.7]] 转为 一维列表。

>>> sum([[1], ['a','b'], [2.3, 4.5, 6.7]], [])
[1, 'a', 'b', 2.3, 4.5, 6.7]

11.使用链状比较操作符重写逻辑表达式 a > 10 and a < 20。

>>> a = 0
>>> 10 < a < 20
False

12.数字列表求和。

>>> import random
>>> a = [random.random() for i in range(5)] # 这里使用random生成5个随机数,(我的理解占位)
>>> a
[0.14325621525854948, 0.08966234475020718, 0.7709046143357973, 0.5893791190407542, 0.30582848481979086]
>>> sum(a)
1.8990307782050992

13.返回给定对象的属性和方法。

>>> a = ()
>>> for item in dir(a):
	print(item)
	
__add__
__class__
__contains__
__delattr__
__dir__
__doc__
__eq__
__format__
__ge__
__getattribute__
__getitem__
__getnewargs__
__gt__
__hash__
__init__
__init_subclass__
__iter__
__le__
__len__
__lt__
__mul__
__ne__
__new__
__reduce__
__reduce_ex__
__repr__
__rmul__
__setattr__
__sizeof__
__str__
__subclasshook__
count
index
>>>

14.计算字符串表达式 ‘(2+3)*5’ 的值。

>>> eval('(2+3)*5')
25

15.实现字符串 ‘x={“name”:“David”, “age”:18}’ 包含的代码功能。

>>> exec('x={"name":"David", "age":18}')
>>> x
{'name': 'David', 'age': 18}

16. 使用 map 函数求列表 [2,3,4,5] 中每个元素的立方根。

>>> [item for item in map(lambda x:pow(x,1/3), [2,3,4,5])]
[1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968]
原文地址:https://www.cnblogs.com/tankeyin/p/12198888.html