欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python基础——04 列表、元组、字符串

程序员文章站 2022-07-14 23:06:07
...

Task 04 列表、元组、字符串

列表

1.创建

#创建4×3维列表
x = [[0 for col in range(3)] for row in range(4)]
print(x, type(x))
# [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] <class 'list'>

x = [[0] * 3 for row in range(4)]
print(x, type(x))
# [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] <class 'list'>

注意

x = [[0] * 3] * 4 (错误)

由于list的元素可以是任何对象,因此列表中所保存的是对象的指针。即使保存一个简单的[1,2,3],也有3个指针和3个整数对象。x = [a] * 4操作中,只是创建4个指向list的引用,所以一旦a改变,x中4个a也会随之改变。

2.添加元素

  • list.append(obj) 在列表末尾添加新的对象,只接受一个参数,参数可以是任何数据类型,被追加的元素在 list中保持着原结构类型。
  • list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

严格来说 append 是追加,把一个东西整体添加在列表后,而 extend 是扩展,把一个东西里的所有元素添加在列表后。

  • list.insert(index, obj) 在编号 index 位置插入 obj

3.删除元素

  • list.remove(obj) 移除列表中某个值的第一个匹配项
  • list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

remove 和 pop 都可以删除元素,前者是指定具体要删除的元素,后者是指定一个索引。

  • del var1[, var2 ……] 删除单个或多个对象

4.列表的其他操作

  • list.count(obj) 统计某个元素在列表中出现的次数
  • list.index(x[, start[, end]]) 从列表中找出某个值第一个匹配项的索引位置
  • list.reverse() 反向列表中元素
  • list.sort(key=None, reverse=False) 对原列表进行排序
    reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)

练习一

# -*- coding: UTF-8 -*-
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
#在列表的末尾增加元素15
lst.append(15)
#在列表的中间位置插入元素20
ind = len(lst)/2
lst[ind-1] = 20
#将列表[2, 5, 6]合并到lst中
lst.extend([2,5,6])
#移除列表中索引为3的元素
del lst[3]
#翻转列表里的所有元素
lst.reverse()
#对列表里的元素进行排序,从小到大一次,从大到小一次
lst.sort()
lst.sort(reverse=True)

练习二
leetcode 852. 山脉数组的峰顶索引

class Solution(object):
    def peakIndexInMountainArray(self, A):
        lo, hi = 0, len(A) - 1
        while lo < hi:
            mi = (lo + hi) / 2
            if A[mi] < A[mi + 1]:
                lo = mi + 1
            else:
                hi = mi
        return lo

元组

解压元组

#解压(unpack)一维元组(有几个元素左边括号定义几个变量)
t = (1, 10.31, 'python')
(a, b, c) = t
print(a, b, c)
# 1 10.31 python

#解压二维元组(按照元组里的元组结构来定义变量)
t = (1, 10.31, ('OK', 'python'))
(a, b, (c, d)) = t
print(a, b, c, d)
# 1 10.31 OK python

#如果只想要元组其中几个元素,用通配符「*」,英文叫 wildcard,在计算机语言中代表一个或多个元素。下例就是把多个元素丢给了 rest 变量
t = 1, 2, 3, 4, 5
a, b, *rest, c = t
print(a, b, c)  # 1 2 5
print(rest)  # [3, 4]

#如果不在乎 rest 变量,那么就用通配符「*」加上下划线「_」
t = 1, 2, 3, 4, 5
a, b, *_ = t
print(a, b)  # 1 2

练习一

# -*- coding: UTF-8 -*-
print((1, 2)*2)
print((1, )*2)
print((1)*2)
#(1, 2, 1, 2)
#(1, 1)
#2

练习二

拆包: 对于函数中的多个返回数据, 去掉元组, 列表 或者字典 直接获取里面数据的过程.

a, b = 1, 2
#等价于 a,b = (1,2)

  • 拆包时要注意,需要拆的数据的个数要与变量的个数相同,否则程序会异常
  • 除了对元组拆包之外,还可以对列表、字典等拆包
  • 对字典拆包后获取的是字典的key值, 而不是value值

字符串

字符串的常用内置方法

  • capitalize() 将字符串的第一个字符转换为大写
  • lower() 转换字符串中所有大写字符为小写
  • upper()转换字符串中的小写字母为大写
  • swapcase() 将字符串中大写转换为小写,小写转换为大写
  • count(str, beg= 0,end=len(string)) 返回str在 string 里面出现的次数,如果beg或者end指定则返回指定范围内str出现的次数
  • endswith(suffix, beg=0, end=len(string)) 检查字符串是否以指定子字符串 suffix 结束,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查
  • startswith(substr, beg=0,end=len(string)) 检查字符串是否以指定子字符串 substr 开头,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查
  • find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1
  • rfind(str, beg=0,end=len(string)) 类似于 find() 函数,不过是从右边开始查找
  • isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。
相关标签: python