【Python每日十题菜鸟版--第四天】

菜鸟网实例

  • 前言
  • 1.列表常用方法
    • 列表的添加
    • 列表的删除
    • 列表的改和查
    • 格式转换
    • 推导式
    • 总结一波
  • 2.计算n个输的立方和
  • 3.列表指定个数翻转
  • 4.列表头尾两个数对调
  • 5.列表指定元素对调
  • 6.翻转列表
    • 方法一:切片
    • 使用reverse方法
    • 其他方法
  • 7.判断元素是否在列表中存在
    • 方法一:利用index()方法
    • 方法二: 利用in操作符
  • 8. 删除列表重复元素
    • 方法一:使用set
    • 方法二:index结合新数组遍历
    • 方法三:使用in操作符
    • 方法四:其他方法
  • 9.复制列表
    • 方法一:直接复制
    • 方法二:切片
    • 方法三
    • 方法四
  • 10.计算列表中元素重复出现的次数
    • 方法一:遍历统计(传统方法)
    • 方法二:使用列表提供的count()方法
    • 方法三:使用字典

前言

这些题都是在菜鸟官网上的练习题,
对于刚学python的新手来说十分的适合,
可以加强和巩固我们的基础。
嘿嘿 一起噶油吧!

1.列表常用方法

列表的添加

# 列表的插入
list = ['yc', 'szs', 'sy', 'bj', 'yc']
list.append('wl') # 从末尾添加
print("第一个list",list)
list.insert(2, "unkown") # 指定位置添加
print("第二个list",list)
list.extend(["uk", "usa"]) # 传入一个数组
print("第三个list",list)

# 列表的搜索 利用索引,返回下标
print(list.index("new"))

列表的删除

list = ['yc', 'szs', 'sy', 'bj', 'yc']
# 删除
list.remove("z")
print("删除z之后", list)

# 也可以利用切片进行删除,比如切掉第一个
list = list[1:]

# pop方法弹出最后一个并保存
poped_ele = list.pop()

列表的改和查

# 查的话利用索引

# 列表的搜索 利用索引,返回下标
print(list.index("szs"))

# 改的话利用索引改就成

格式转换

# join方法 将列表变成字符串

# split方法 将一个字符串分隔成多个列表

推导式

# 一种很简便很优雅的写法
# 结合了遍历,条件语句和一些数据的基本操作
# 列表推导式 
#[i*i for i in list if i >5]

总结一波

# 列表添加 :三种方法 append extend insert
# 列表删除: remove pop 切片
# 列表操作符 * +
# 列表的截取:切片
# 列表的嵌套:相当于二维数组,高维数组
# 列表的比较 ,引入operator模块的eq方法,operator.eq(list_a,list_b)
# 列表函数: len max min list(Seq):将元组转换成列表
# 列表方法: count(obj):统计元素在列表中出现的次数   
#           list.index(obj):查找某一个元素第一次出现的索引值
#           list.reverse():反向列表中的元素
#           list.sort(key = None, reverse = Flase) 对原列表进行排序
#           list.clear() 清空列表.清空后变成[]     list.copy() 复制列表
# 推导式:[i*i for i in list if i >5]

2.计算n个输的立方和

# 计算n个自然数的立方和
while True:
    try:
        n = int(input("请输入要计算的前几项立方和:"))
        break
    except (TypeError,ValueError):
        print("请输入一个正整数")

sum = 0
for num in range(1,n+1):
   
    sum += num**3
print(f"前{n}项的立方和和为{sum}")

3.列表指定个数翻转

# 使用切片进行截取数据
arr = [1, 2, 3, 4, 5, 6, 7]

def reverse(arr, d, n):
    # 使用列表切片
    arr1 = arr[:n]
    print(arr1)

    arr2 = arr[n:]
# 这里还可以用拼接,用"+"号将两个数组连接起来
    arr2.extend(arr1)

reverse(arr, 7, 2)

4.列表头尾两个数对调

# 最优雅的方法
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

arr[0], arr[-1] = arr[-1], arr[0]
print(arr)

# 当然也可以像上一个题一样利用切片

5.列表指定元素对调

# 熟悉这些写法,将用户那边的字符串变成列表,然后在将列表内的字符串变成int型
arr = list(map(int, input("请输入一序列数字:").split()))

def reverse_position(arr, pos1, pos2):
    arr[pos1], arr[pos2] = arr[pos2], arr[pos1]
    print("这是print输出的数组:", arr)
    return arr

print("这是返回的数组:", reverse_position(arr, 3, 4))

6.翻转列表

方法一:切片

# 最优雅的方法--切片
# 翻转列表
arr = list(map(int, input("请输入一序列数字:").split()))
# 使用切片进行逆转,主打的就是一个优雅 
arr = arr[::-1]
print(arr)

# 当然也有很多方法 ,

使用reverse方法

list_ = [1, 2] * 4
print("list", list_start) # [1, 2, 1, 2, 1, 2, 1, 2]
list_start.reverse()
print("list", list_start) # [2, 1, 2, 1, 2, 1, 2, 1]

其他方法

# 这里仅仅提供思路
# 如遍历,拆包解包等,但都没有切片优雅
#但这里的方法都没有切片和直接调用reverse方法优雅

7.判断元素是否在列表中存在

方法一:利用index()方法

arr = list(map(int, input("请输入一序列数字:").split()))
while True:
    try:
        value = int(input("请输入一个数字:"))
        break
    except (ValueError, TypeError):
        pass
    
    
def is_exist(arr, value):
    if arr.index(value):
        print(f"该元素{value}存在于列表{arr}中")
    else:
        print(f"该元素{value}不存在于列表{arr}中")


is_exist(arr, value)

方法二: 利用in操作符

arr = list(map(int, input("请输入一序列数字:").split()))
while True:
    try:
        value = int(input("请输入一个数字:"))
        break
    except (ValueError, TypeError):
        pass

def is_exist(arr, value):
    for value in arr:
        if arr.index(value):
            print(f"该元素{value}存在于列表{arr}中")
        else:
            print(f"该元素{value}不存在于列表{arr}中")

8. 删除列表重复元素

方法一:使用set

# 最优雅的方法
arr = [1, 1, 2, 3, 2, 3, 4, 5, 6, 11, 21, 23]
# 方法一:使用set
print(f"方法一去重的数组{list(set(arr))}")

方法二:index结合新数组遍历

# 方法二:使用index 结合一个新的数组,如果该元素存在于列表中那么就移除出去
arr2 = []
for value in arr:
    # 表示这个数存在于数组中,就不放入,没有就放入
    try:
        if arr2.index(value):
            pass
    except ValueError:
        arr2.append(value)

print(f"方法二去重的数组{arr2}")

方法三:使用in操作符

# 方法三 :使用in判断该元素是否存在于这个数组中
arr3 = []
for value in arr:
    if value not in arr3:
        arr3.append(value)
    else:
        pass
print(f"方法三去重的数组{arr3}")

方法四:其他方法

# 当然还有很多方法
# 这里只提供提供思路
# 比如 利用双重循环等,童鞋们大可发挥思想

9.复制列表

方法一:直接复制

# 方法一:直接赋值
arr = [1, 2, 34, 5]
arr1 = arr
print(f"方法一复制出的列表{arr1}")

方法二:切片

# 方法二:切片
arr2 = arr[::]
print(f"方法二复制出的列表{arr2}")

方法三

# 方法三:使用extend方法
arr3 = []
arr3.extend(arr)
print(f"方法三复制出的列表{arr3}")

方法四

# 方法四:add 方法 或者是insert方法也可以,结合遍历数组
# 看起一个很简单甚至没必要的问题
# 其实或许可以提供思路,发散思维

10.计算列表中元素重复出现的次数

方法一:遍历统计(传统方法)

list = [1, 1, 1, 2, 3, 2, 3, 2, 23, 2, 3, 2, 3, 23, 2, 3, 23, 3]

while True:
    try:
        value = int(input("请输入你想要统计的数:"))
        break
    except (ValueError, TypeError):
        pass

# 方法一:遍历
count = 0
for v in list:
    if v == value:
        count += 1
    else:
        pass
print(f"方法一统计{value}出的次数是:{count}")

方法二:使用列表提供的count()方法

# 方法二:使用count()方法
print(f"方法二统计{value}出的次数是:{list.count(value)}")

方法三:使用字典

# 使用子带你这个数据结构
# 这或许是一个高级的方法
# 将列表中的元素作为字典的键,字典的值为元素出现的次数
# 你们试试看

学无止境,都看到这了,点个赞关注支持一下呗!嘿嘿(* ̄︶ ̄)

你可能感兴趣的:(python,numpy,开发语言)