Python数据类型:序列(列表list元组tuple字符串str)

Posted 风流 少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python数据类型:序列(列表list元组tuple字符串str)相关的知识,希望对你有一定的参考价值。

一:序列

序列sequence是多个值组成的一个整体,Python中的序列包含列表list元组tuple字符串str等。

二:列表list

字符串转列表list()

['a', 'b', 'c']
print(list('abc'))

正负索引

  • 正索引:从0开始,方向从左到右。
  • 负索引:从-1开始,方向从右到左。

chars = ['a', 'b', 'c', 'd', 'e', 'f']
# nums[0]=a, nums[-1]=f
print(f"chars[0]=nums[0], nums[-1]=chars[-1]")

切片

[开始索引:结束索引:步长]

  • 开始索引: 可以是正索引也可以是负索引,如果省略开始索引默认从头开始。
  • 结束索引:可以是正索引也可以是负索引,如果省略结束索引默认到列表的结尾,不包含结束索引元素
  • 步长:默认为1,大于1表示:包含第一个元素,然后每隔n -1 获取指定的元素。

切片获取

chars = ['a', 'b', 'c', 'd', 'e', 'f']
# ['c', 'd', 'e', 'f']
print(chars[2:])
# ['a', 'b'] 不包含index=2的元素
print(chars[:2]) 
# ['e', 'f'] 负索引,从右到左
print(chars[-2:])


# ['b', 'c']
print(chars[1:3])
# ['d', 'e']
print(chars[-3:-1])
# ['b', 'c']
print(chars[1:-3])


# ['b', 'c', 'd', 'e']
print(chars[1:5:1])
# ['b', 'd'] 从[1:5]获取的结果开始,每隔步长-1个获取一个元素
print(chars[1:5:2])
# ['a', 'c', 'e']
print(chars[::2])
# ['f', 'd']
print(chars[-1:-5:-2])

切片修改元素

nums = [1, 2, 3, 4, 5]
nums[1:4] = [22, 33, 44]
# [1, 22, 33, 44, 5]
print(nums)

切片添加元素

切片赋值时当开始索引等于结束索引时,此时是在该索引位置添加多个索引元素

nums = [1, 5]
# 5
print(nums[1])
# []:开始包含index=1,结束又不包含index=1,所以为[]
print(nums[1:1])
nums[1:1] = [2, 3, 4]
# [1, 2, 3, 4, 5]
print(nums)

切片删除元素

nums = [1, 2, 3, 4, 5]
nums[1:4] = []
# [1, 5]
print(nums)

# 相当于del[1:4]
del nums[1:4]


nums = [1, 2, 3, 4, 5]
nums[1:4] = ['b', 'c']
# [1, 'b', 'c', 5]
print(nums)

序列相加 +

# [1, 2, 3, 'a', 'b', 'c']
print([1, 2, 3] + ['a', 'b', 'c'])

序列相乘 *

序列相乘表示将列表中的所有元素追加到列表中几次。

# [1, 2, 3, 1, 2, 3, 1, 2, 3]
print([1, 2, 3] * 3)

# 初始化3个空元素
# [None, None, None]
print([None] * 3)

成员资格 in

print(1 in [1, 'hello', 2.0, True])

长度len、最大值max、最小值min

nums = [0, 1, 2, 3, 4, 5]
# 6, 5, 0
print(f'len(nums), max(nums), min(nums)')

删除元素 remove()

删除指定元素的第一个,如果不存在则抛出异常ValueError

chars = ['a', 'b', 'a', 'd', 'e']
chars.remove('a')
# ['b', 'a', 'd', 'e']
print(chars)

# ValueError: list.remove(x): x not in list
chars.remove('f')

# 根据索引删除
del chars[0]

弹出元素 pop()

删除列表中指定索引的元素(如果没有指定则删除最后一个元素),并返回删除的元素。

chars = ['a', 'b', 'c', 'd', 'e']
# 根据索引删除,并返回删除的元素,pop=a
pop = chars.pop(0)
# pop=e
pop = chars.pop()

元素拼接成字符串

print(",".join(['a', 'b', 'c']))

追加 append()

将单个元素添加到列表的末尾。

nums = [1, 2]
nums.append(3)
print(nums)

拓展 extend()

将一个列表中的所有元素添加到另一个列表的末尾,和+的作用一样。

# 方式一:使用extend()函数
nums = [1, 2, 3]
nums.extend([4, 5, 6])
# [1, 2, 3, 4, 5, 6]
print(nums)

# 方式二:使用➕运算符
# [1, 2, 3, 4, 5, 6]
print([1, 2, 3] + [4, 5, 6])

# 方式三:切片
nums = [1, 2, 3]
nums[3:3] = [4, 5, 6]
# [1, 2, 3, 4, 5, 6]
print(nums)

插入 insert()

items = ['a', 'c', 'd']
items.insert(1, 'b')
# ['a', 'b', 'c', 'd']
print(items)

清空 clear()

清空列表中的所有元素。

chars = ['a', 'b', 'c', 'd', 'e']

# 清空列表 chars=[]
chars.clear()

数量 count()

获取元素在列表中出现的次数。

nums = ['a', 'a', 'a', 'b']
# 3
count = nums.count('a')
print(count)

索引 index()

获取元素中第一次出现的索引位置,如果找不到会抛出异常 ValueError

items = ['a', 'b', 'c', 'a']
index = items.index('a')
# 0
print(index)


items = ['a', 'b', 'c', 'a']
# ValueError: 'd' is not in list
index = items.index('d')

反转 reverse()

chars = ['a', 'b', 'c', 'd', 'e']
chars.reverse()
# ['e', 'd', 'c', 'b', 'a']
print(chars)

赋值 copy()

copy()方法是深拷贝。

chars = ['a', 'b', 'c']
chars_copy = chars.copy()

chars.append('d')
chars_copy.append('e')
# ['a', 'b', 'c', 'd'] ['a', 'b', 'c', 'e']
print(chars, chars_copy)

排序 sort()

排序会修改原来的值,sort()方法没有返回值。

nums = [5, 1, 8, 6, 9]
nums.sort()
print(nums)

排序 sorted()

sorted()函数有返回值,返回排序后的值。

nums = [5, 1, 8, 6, 9]
nums_sort = sorted(nums)
# [5, 1, 8, 6, 9] [1, 5, 6, 8, 9]
print(nums, nums_sort)

循环

nums = [5, 1, 8, 6, 9]
for i in nums:
    print(i)

三:元组tuple

元组tuple和列表list最大的不同是元组不可以修改,其它的和列表没什么区别。

# 当元组中只有一个元素,元素后面的逗号是不能省略的,因为如果没有逗号那么(1)和1是完全一样,此时()只是用来表示优先级。
t = (1,)

# 可以使用函数tuple()将list转为tuple
nums = tuple([1, 2, 3])
# 注意:5下标虽然超出实际值,但不报错
print(nums[1:5])

四:字符串str

转换大写upper()/转换小写lower()/首字符转大写capitalize()/所有单词首字符大写

line = 'this is line string'
# THIS IS LINE STRING
upper = line.upper()
# this is line string
lower = upper.lower()

a = 'hello world'
# Hello world
print(a.capitalize())
# Hello World
print(a.title())

左对齐/右对齐/居中对齐

a = 'python'
b = 'java'
# python
# java
print(a.ljust(10))
print(b.ljust(10))
#     python
#       java
print(a.rjust(10))
print(b.rjust(10))

# python____
# ______java
print(a.ljust(10, '_'))
print(b.rjust(10, '_'))


a = 'python'
b = 'java'
# _______python_______
# ________java________
print(a.center(20, '_'))
print(b.center(20, '_'))

前缀startswith()和后缀endswith()

line = 'this is line string'
# True
yes = line.startswith('this')
# True
result = line.endswith('string')

替换 replace()

line = 'this is line string'
# this is line str
replace = line.replace('string', 'str')

分割 split()

line = 'this is line string'
# ['this', 'is', 'line', 'string']
items = line.split(' ')

索引 index()

查找字符串第一次出现的索引,如果找不到抛出异常ValueError。

line = 'this is line string'
# ValueError: substring not found
pos = line.index('line2')

查找 find()

与index()不同的是find()如果找不到返回-1而不会抛出异常ValueError。

line = 'this is line string'
# -1
pos = line.find('line2')

统计字符串出现的次数 count()

字符串对应的count()可以指定区间:开始索引,结束索引。

line = 'this is line string'
# 2
count = line.count('is')

# 1
count = line.count("is", 4, len(line))

去除首尾空格和换行符 strip() | lstrip() | rstrip()

line = ' \\n this is line string\\n '
strip = line.strip()
print(strip)

lstrip = line.lstrip()
rstrip = line.rstrip()

编码 encode()

encode() -> bytes : 方法返回字节。

a = 'python'
# b'python'
print(a.encode('UTF-8'))

格式化 format()

# 方式一
line = "1  2  3 "
print(line.format('a', 'b', 'c'))

# 方式二
line = "1 %s 2 %d 3 %f"
print(line % ('张三', 18, 66.0))

# 方式三
line = "姓名name 年龄 age".format(name='张无忌', age=28)
print(line)

# 方式四
name = '张无忌'
age = 30
line = f"姓名name 年龄 age"
print(line)

以上是关于Python数据类型:序列(列表list元组tuple字符串str)的主要内容,如果未能解决你的问题,请参考以下文章

8 Python 数据类型—元祖

Python数据类型:序列(列表list元组tuple字符串str)

Python 元组tuple 列表list 字典dict集合set迭代器生成器

2-python元组和列表

python 元组

Python数据类型:序列(字符串str列表list元组tuple字典dict范围range)