列表及相关知识Task04

Task 04 列表及相关操作
容器器数据类型,有以下四种。

列表<class 'list'>
元组<class 'tuple'>
字典<class 'dict'>
集合<class 'set'>
字符串<class 'str'>

这里有必要扩展一下python中的容器。

容器:

容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not
in
关键字判断元素是否包含在容器中。

这里的容器于我们常理解的Docker 容器或者Ananconda的区别。

容器是一种可以包含其他类型对象(如列表、元组、字典等)作为元素的对象; 容器仅仅只是用来存放数据的,我们平常看到的 l =
[1,2,3,4]等等,好像我们可以直接从列表这个容器中取出元素,但事实上容器并不提供这种能力,而是可迭代对象赋予了容器这种能力。

----我们可以理解容器是一个对象,(可见Python这种面向对象的思想融合于每个角落),所以列表的对象的后面可以有很多的方法。如list.apped, list.pop…
这里提到的另外一个关键词“可迭代”“。
以下图为例。list.extend()方法,如果直接list.extend(15),即尝试把数字15插入到列表的后面会报的错误。错误提示是, 数字15‘不是可迭代对象。
在这里插入图片描述
如果把list.extend([15])加上方括号,此时的输出就正常。即我们插入的列表是一个可迭代对象。关于迭代,可迭代对象,迭代器,推荐下面的这篇文章。关于迭代,可迭代对象,迭代器的基础概念
在这里插入图片描述

关于深拷贝与浅拷贝,我从一个西瓜得故事来解释。
举一个例子,一天,A看见B家里有一大箩筐西瓜。A嘴馋得十分想吃,于是问:B哥,能把你家西瓜全部给我吗?(我们假定A拿走西瓜后,B会有另外一筐完全一样的西瓜)
B哥考虑了一会儿,他有2种回答方式:
深拷贝式回答:可以呀,你回家去拿个箩筐来装就是了。西瓜可以给你,但是得留着,只要筐在,西瓜就在。 心安啦。
浅拷贝式回答:可以呀,西瓜就在这里,你想吃得时候来拿吧,我把我家地址给你。说完,A转身就去办正事儿了。看A走了以后,B哥心想,让A知道了,岂不自己能吃得就少了。所以B哥就一顿狂吃,只剩下了一个。过会儿,A来了,一看只有一个了。骂骂咧咧的把剩下的瓜吃完了。他俩从此断交。

在这里插入图片描述l列表任务打卡。

import numpy as np
import time
start =time.time()
temp = [2, 3, 4, 5, 3, 2,3]
if len(temp) < 3:
    print('your input is less than 3 elem, and please input again!!')
max = np.max(temp)
max_index = temp.index(max)
left_temp = temp[:max_index]
Right_temp = temp[max_index+1:len(temp)]

for i in range(max_index+1):
    if i==0:
        continue
    else:
        if i == max_index:
            print('True')
            break
        if left_temp[i] > left_temp[i-1]:
            continue
        else:
            print('False')
            break
for i in range(len(Right_temp)):
    if len(Right_temp) == 1:
        print('True')
        break
    if Right_temp[i-1] > Right_temp[i-2]:
        print('False')
        break
    else:
        Right_temp.pop()

在学习的元组的相关的操作符的时候**+** 可以将俩个元组首尾拼接。其实列表也是可以的。

A = [1,2]
B=  [3,4]
print(A+B)  # [1, 2, 3, 4]
C = (2,3)
D = ('d','e') 
print(C+D) # (2, 3, 'd', 'e')


Python 之拆包理解: 把元组、列表、字典里面的数据取出来分别赋值给占位符或者变量。


##### 对列表进行拆包

my_list = [1, 3.14, "hello", True]
num, pi, my_str, my_bool = my_list
# 或者
num, pi, my_str, my_bool = [1, 3.14, "hello", True]

### 对元组进行拆包

my_tuple = (1, 3.14, "hello", True)
num, pi, my_str, my_bool = my_tuple

### 对字典进行拆包

my_dict = {"name":"老王", "age": 19}
ret1, ret2 = my_dict
# 得到的是key  字典是无序的
print(ret1, ret2)


a, b = 1, 2 ##**这里是属于用拆包的形式定义变量。**

Python 中还有一种装包与拆包的过程。此过程类似于C++语言中形参传递的传址(arg,kwargs)与传值(*args, **kwargs)。

def run(a,*args):
    print(a) #第一个参数传给了a
    print(args) # args是一个元组,里面是2和3两个参数, # (2, 3)
    print("对args拆包:", end=' ') # *args是将这个元组中的元素依次取出来 # 2 3
    print(*args)

run(1,2,3) 

任务 打卡:::

stringres = ' 122'
numesrr =['1','2']
for i in range(len(stringres)):
    temp = stringres[i]
    if temp not in numesrr:
        print('false')

关于 回文字符得查找。

string_input = 'babadefghhijkkjihh'
max_num = 0
max_str = ''

for i in range(1, len(string_input) - 1):
    if len(string_input) - i < max_num:
        break
    j = 1
    offset_L= 0
    offset_R = 0
    if string_input[i] == string_input[i - 1]:
        offset_L = -1
    elif string_input[i] == string_input[i + 1]:
        offset_R = 1
        
    while True:
        try:
            if (i-j) < 0 or (i+j) > len(string_input):
                break
            if string_input[i - j+ offset_L] == string_input[i + j+offset_R]:
                max_str = string_input[i- j+offset_L: i +j + 1+offset_R]
                max_num = len(max_str)
                j += 1
            else:
                break
        except Exception:
            break
print(max_num)
print(max_str)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值