第四天基础课程

5.12 拷贝

5.12.1 直接引用(赋值)

list_1 = [1,2,3,[4,5]]
#引用
list_2 = list_1
print(list_2)
print(id(list_1))
print(id(list_2))
print('#############更改list1')
list_1[0] = 100
print('list1',list_1)
print('list2',list_2)
注意点:
list1和list2都是指向相同的地址,所以更改其中的一个列表其他的列表也会发生变化

5.12.2 list自带的拷贝

list_1 = [1,2,3,[4,5]]
list_2 = list_1.copy()
print(id(list_1))
print(id(list_2))
注意点:
1、拷贝完成之后的列表,与原始列表是不同的列表

5.12.3 浅拷贝

list_1 = [1,2,3,[4,5,[1,2]]]
list_2 = list_1.copy()
print(id(list_1))
print(id(list_2))

list_1[0] = 100
print(list_1)
print(list_2)

list_1[3][0] = 1
print(list_1)
print(list_2)
print(id(list_1[3]))
print(id(list_2[3]))

5.12.4 深拷贝

import copy
list_1 = [1,2,3,[4,5,[1,2]]]
list_2=copy.deepcopy(list_1)
print(id(list_1))
print(id(list_2))

list_1[0] = 100
print(list_1)
print(list_2)

list_1[3][0] = 1
print(list_1)
print(list_2)
print(id(list_1[3]))
print(id(list_2[3]))

list_1[3][2][0] = 2
print(list_1)
print(list_3)
注意点:
ID地址不同,子对象ID也不相同深拷贝会创建一个跟原来列表完全没有关系的列表,他们的列表对象和子对象都是不同的,他们的操作也是不同的,是完全独立的

5.13 排序

sort()

def sort(self, *args, **kwargs): # real signature unknown
    """ Stable sort *IN PLACE*. """
    pass
注意点:
1、没有返回值,在原始数据上做的排序
2、默认的排序方式是从小到大,如果指定reverse=True,则排序变为从大到小

soretd()

def sorted(*args, **kwargs): # real signature unknown
    """
    Return a new list containing all items from the iterable in ascending order.
    
    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order.
    """
    pass
注意点:
不在原始数据上,返回一个新的列表

5.14 逆置

reverse()

def reverse(self, *args, **kwargs): # real signature unknown
    """ Reverse *IN PLACE*. """
    pass
注意点:
只是一个方法实现逆置,没有返回值,所以是在当前数据上做操作

reversed()

class reversed(object):
    """ Return a reverse iterator over the values of the given sequence. """
    
    注意点:生成器是特殊的迭代器(一边生成一边循环;可以有效节省计算机资源;保存的不是数据而是算法)
    返回一个迭代器对象
    如果需要访问可以使用的是for循环来获取

问题

def Bra(i1,i2,i3,i4,j1,j2,j3,list_3):
    list_2 = ['%s%s%s%s%s%s%s','(%s%s%s)%s%s%s%s','%s%s(%s%s%s)%s%s','%s%s%s%s(%s%s%s)','(%s%s%s%s%s)%s%s','%s%s(%s%s%s%s%s)','((%s%s%s)%s%s)%s%s','(%s%s%s)%s(%s%s%s)','(%s%s(%s%s%s))%s%s','%s%s((%s%s%s)%s%s)','%s%s(%s%s(%s%s%s))']
    list_4 = [i1, i2, i3, i4]

    for k in list_2:
        try:
            ret1 = eval(k%(i1,j1,i2,j2,i3,j3,i4))
        except:
            pass
        if list_4 in list_3:
            break
        if ret1 == 24:
            print(i1,i2,i3,i4)
            print(k%(i1,j1,i2,j2,i3,j3,i4))
            list_3.append(list_4)


def Oper(i1,i2,i3,i4,list_3):
    list_1 = ['+','-','*','/']
    for j1 in list_1:
        for j2 in list_1:
            for j3 in list_1:
                Bra(i1,i2,i3,i4,j1,j2,j3,list_3)

def Num(list1,list_3):
    if isinstance(list1,list):
        pass
    else:
        print("你的输入有误")
    if len(list1)<4:
        print('您输入的数据不够')
    list_2 = list1.copy()
    for i1 in list_2:
        for i2 in list_2[(list_2.index(i1)+1):]:
            for i3 in list_2[(list_2.index(i2)+1):]:
                for i4 in list_2[(list_2.index(i3)+1):]:

                    Oper(i1,i2,i3,i4,list_3)



list1 = [1,2,3,4,5,6,7,8,9,10,11,12,13]
list_3 = []
Num(list1,list_3)
print(list_3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值