数组基础1

序列:存储一堆数据的集合/容器

列表、字符串、元组、集合、字典

序列通用操作 索引/角标

>>> arr = [1,2,3,4,5,6,7,8,9]

>>> arr[0] 1 >>> arr[8]

9

>>> arr[-1] # 倒数第1个

9

>>> arr[-2] # 倒数第2个

8

>>> arr[-100] Traceback (most recent call last): File "", line 1, in IndexError: list index out of range >>> arr[100] Traceback (most recent call last): File "", line 1, in IndexError: list index out of range 切片 就是获取序列中某一个连续子区间

序列名[a : b : c] 跟 range(a, b, c) 基本类似

>>> arr[2:] # 从角标2开始向尾遍历 步长为1

[3, 4, 5, 6, 7, 8, 9]

>>> arr[2::2] # 从角标2开始向尾遍历 步长为2

[3, 5, 7, 9]

>>> arr[:6] # 从头开始到角标6(不取) 步长为1

[1, 2, 3, 4, 5, 6]

>>> arr[:6:3] # 从头开始到角标6(不取) 步长为3 [1, 4]

>>> arr[:] # 从头到尾 [1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> arr[::] [1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> arr[::2] [1, 3, 5, 7, 9] =======================================特殊的

>>> arr[-1:-7] # 从尾到头 步长必须负数 []

>>> arr[-1:-7:-1] [9, 8, 7, 6, 5, 4]

>>> arr[-9:7] # 从头到尾 步长为正数

[1, 2, 3, 4, 5, 6, 7]

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

>>> arr[-9:-2] # 从头到尾 步长为正数

[1, 2, 3, 4, 5, 6, 7]

连接和重复 + *

成员资格

>>> 1 in arr

True >

>> 10 in arr

False

长度与最值

>>> len(arr) # 获取序列的长度

9 >>> len(arr)

9

>>> max(arr)

9

>>> min(arr)

1

>>> s = "ABC"

>>> len(s)

3

>>> max(s)

'C'

>>> min(s)

'A'

创建问题

"""

列表

1.存储多个数据 数据不一定都是同一个类型 但是为了方便操作 建议存一样的类型

2.可以通过索引/角标来访问元素

3.可变长的数组 我们后续可以在列表中进行 增 删

4.用一对中括号[] """

# 创建一个空的列表

arr = []

print(arr)

# 创建一个具有若干元素的列表

arr = [1, 2, 3, 4]

print(arr)

# 创建一个具有长度但是没有值的列表

arr = [None] * 5

print(arr)

# 通过【列表推导式/解析式】来进行创建

# [目标值表达式 for 目标值 in 迭代对象 if ....]

# 创建1~100当中 能够被3整除 且 能够被5整除 的所有数字

"""

for x in range(1, 101):

        if x % 3 == 0 and x % 5 == 0:

                print(x)

"""

arr = [x for x in range(1, 101) if x % 3 == 0 and x % 5 == 0]

print(arr)

 # 创建1~100当中 偶数

arr = [x for x in range(1, 101) if x % 2 == 0]

print(arr)

# 水仙花数

for num in range(100, 1000):

     a = num % 10

     b = num // 10 % 10

     c = num // 100

     if a ** 3 + b ** 3 + c ** 3 == num:

         print(num)

arr = [num for num in range(100, 1000) if (num % 10) ** 3 + (num // 10 % 10) ** 3 + (num // 100) ** 3 == num]

print(arr)

arr = [x * 3 + "哈哈" for x in "ABCDEFG"]

print(arr)

# 通过输入来获取元素

"""

5

"1" "2" "3" "4" "5"

"""

n = eval(input())

arr = input().split(" ") # 将输入的数据以空格分割 分割的结果就是列表

print(arr)

arr = [int(x) for x in arr]

print(arr)

遍历问题

arr = [1,2,3,4,5,6,7,8,9]

# 通过角标遍历

for i in range(len(arr)):

         print(arr[i])

# 通过foreach遍历

for num in arr: print(num)

最值问题

arr = [1,2,3,4,5,6,7,8,9]

# 最大值

maxNum = arr[0]

minNum = arr[0]

for i in range(1, len(arr)):

        if arr[i] > maxNum:

                 maxNum = arr[i]

        if arr[i] < minNum:

                minNum = arr[i]

print(maxNum)

print(minNum)

存在性问题

arr = [1,2,3,4,5,4,6,4,7,8,9]

# 元素是否存在

key = 10

for num in arr:

         if num == key:

        print("存在")

        break

else:

         print("不存在")

# 元素在哪个位置 从左到右第1次出现的角标 不存在返回-1

key = -4

index = 0

for i in range(len(arr)):

        if arr[i] == key:

                index = i

                 break

else:

         index = -1

print(index)

翻转问题

arr = [1,2,3,4,5,6,7,8,9,10]

#     0 1 2 3 4 5 6 7 8

arr = arr[-1::-1]

print(arr)

for i in range(0, len(arr) // 2):

        j = len(arr) - 1 - i

        arr[i], arr[j] = arr[j], arr[i]

 print(arr)

left = 0

right = len(arr) - 1

while left <= right:

        arr[left],arr[right] = arr[right],arr[left]

        left += 1

        right -= 1

print(arr)

排序算法

选择排序

冒泡排序

插入排序

查找算法

二分查找:要求数据必须有序

arr = [1,2,3,4,5,6,7,8,9]

minIndex = 0

maxIndex = len(arr) - 1

midIndex = (minIndex + maxIndex) // 2

key = 8

while arr[midIndex] != key:

        if arr[midIndex] < key:

                minIndex = midIndex + 1

        else:

                maxIndex = midIndex - 1

         if minIndex > maxIndex:

                midIndex = -1

                break

        midIndex = (minIndex + maxIndex) // 2

print(midIndex)

插值查找

数组相关函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值