lst= [1,2,3,4,5,6,4,3]
lst.reverse()
for x in lst:
print(x)
非list手动重排
lst = (2,3,4,5,6)
for i in range(len(lst)-1,-1,-1):
# print(i)
print(lst[i])
2.查询并替换一个文本中的字符串
str = 'hello python, my name is liuxin,nice to neet you '
print(str.replace('liuxin', 'LIUXIN'))
import re
pattern = r'(hello|python)'
print(re.sub(pattern,'bye',str))
3.使用Python实现单例模式
1. 使用__new__方法,把类实例绑定到类变量上,通过内部代码实现
class SingleInstance(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
cls._instance = object.__new__(cls, *args, **kwargs)
return cls._instance
class TestClass(SingleInstance):
a = 1
test1 = TestClass()
test2 = TestClass()
print(test2 is test1)
print(id(test1), id(test2))
2. 使用装饰器
def SingleInstance(cls, *args, **kwargs):
isinstance = {}
def _singleinstance():
if cls not in isinstance:
isinstance[cls] = cls(*args,**kwargs)
return isinstance[cls]
return _singleinstance
@SingleInstance
class TestClass(object):
a = 1
test1 = TestClass()
test2 = TestClass()
print(id(test2), id(test1))
3. 使用__metaclass__(元类)
class Single(type):
def __init__(cls, name, bases, dict):
super(Single, cls).__init__(name, bases, dict)
cls._instance = None
def __call__(cls, *args, **kwargs):
if cls._instance is None:
cls._instance = super(Single, cls).__call__(*args, **kwargs)
return cls._instance
class TestClass(metaclass=Single):
pass
test1 = TestClass()
test2 = TestClass()
print(id(test1), id(test2))
alist = ['a','b','c']
blist = ['x','b', 'q']
def merge_list(*args):
s = set()
for i in args:
print(i)
s = s.union(i)
print(s)
return s
merge_list(alist, blist)
9.打乱一个有序列表
from random import shuffle
list = [x for x in range(10)]
print(list)
shuffle(list)
print(list)
def string_to_dict(string):
d = {}
for kv in string.split('|'):
k,v = kv.split(':')
if v.isdigit():
v = int(v)
d[k] = v
return d
print(string_to_dict('k1:1|k2:2|k3:3'))