列表是可以修改的,元组是不可以修改的
序列是一种数据结构。列表、字符串和元组都属于序列,其中列表是可变的,而元组和字符串是不可变的。
>>>greeting = 'hello'
>>>greeting[0]
'h'
#索引为负数时,将从右往左开始数
>>>greeting[-1]
'o'
# 函数调用返回一个序列,可以直接对其执行索引操作
forth = input("Year: ")[3]
print(forth)
索引操作示例:
months = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
]
# 一个列表,其中包含数1-31对应的结尾
endings = ['st', 'end', 'rd'] + 17 * ['th'] \
+ ['st', 'end', 'rd'] + 7 * ['th'] \
+ ['st']
year = input("Year : ")
month = input("Month (1-12): ")
day = input('Day (1-31): ')
month_number = int(month)
day_number = int(day)
# 别忘了将表示月和日的数减1,这样才能得到正确的索引
month_name = months[month_number - 1]
ordinal = day + endings[day_number - 1]
print(month_name + ' ' + ordinal + ', ' + year)
注意:其中第一个索引指定的元素包含在切片内,但第二个指定的元素不包含在切片内
string = '0123456789'
cap = string[3: 8]
cut = string[5: -4]
print(cap)
print(cut)
# 后三位
print(string[-3:])
# 头三位
print(string[: 3])
结果:
34567
5
789
012
切片操作示例:
# 从类似于http://www.something.com的URL中提取域名
url = input("Please input the URL:")
domain = url[11: -4]
print("Domain name:" + domain)
结果:
Please input the URL:http://www.baidu.com
Domain name:baidu
步长操作:第一个索引依然包含在内,第二个索引不包含在内,当部长为负数时,第一个索引必须比第二个索引要大。
number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(number[0: 10: 1])
print(number[0: 10: 2])
print(number[3: 6: 3])
print(number[::4])
print(number[8: 3: -1])
print(number[::-2])
result:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 3, 5, 7, 9]
[4]
[1, 5, 9]
[9, 8, 7, 6, 5]
[10, 8, 6, 4, 2]
print([1, 2, 3] + [3, 4, 5])
print('Hello' + 'World')
result:
[1, 2, 3, 3, 4, 5]
HelloWorld
sentence = input("Sentence:")
sentence_width = 80
text_width = len(sentence)
box_width = text_width + 6
left_margin = (sentence_width - box_width) // 2
print()
print(' ' * left_margin + '+' + '-' * (box_width - 2) + '+')
print(' ' * left_margin + '| ' + ' ' * text_width + ' |')
print(' ' * left_margin + '| ' + sentence + ' |')
print(' ' * left_margin + '| ' + ' ' * text_width + ' |')
print(' ' * left_margin + '+' + '-' * (box_width - 2) + '+')
print()
in
,其返回相应的布尔值。permission = 'rw'
print('w' in permission)
print('x' in permission)
result:
True
False
操作示例:
database =[
['albert', '1234'],
['dilbert', '4242'],
['smith', '7542'],
['jones', '9843']
]
username = input('User name: ')
pin = input('PIN code: ')
if [username, pin] in database:
print('Access grant')
result:
User name: albert
PIN code: 1234
Access grant
长度、最小值和最大值:
number = [100, 34, 678]
print(len(number))
print(max(number))
print(min(number))
result:
3
678
34
函数(实际上是一个类)list
:可将序列转换为列表(不能像修改列表一样修改字符串)
列表操作:
number = [123, 43, 5778, 98, 234, 234]
print(list(number))
#修改列表:给元素赋值
number[1] = 43
print(number)
#删除元素
del number[1]
print(number)
#给切片赋值;可在不替换原有元素的情况下插入新元素,也可删除
number[2: ] = 'hello'
print(number)
number = [123, 43, 5778, 98, 234, 234]
number[1: 1] = [1, 2, 3, 4]
print(number)
number[1: 5] = []
print(number)
###列表方法:
lst = [1, 2, 3]
list.append(lst, 4)
print(lst)
list.clear(lst)
print(lst)
b = a
b[1] = 5
print(b)
print(a)
b = a.copy()
b[2] = 89
print(b)
print(a)
list_1 = ['to', 'besda', 'tso', 'bfffsfe', 'dos', 'orss', 'not']
print(list_1.count('to'))
a.extend(list_1)
print(a)
print(list_1.index('besda'))
list_1.insert(2,'hello')
print(list_1)
pop
是唯一一个既修改列表又返回一个非None值的列表方法print(list_1.pop())
list_x = [1, 2, 3]
list_x.append(list_x.pop(2))
print(list_x)
list_1.remove('besda')
print(list_1)
list_x.reverse()
print(list_x)
sorted
返回一个列表x = [4, 6, 2, 1, 8, 10]
x.sort()
print(x)
key
关键参数
list_1.sort(key=len)
print(x)
reverse
设置True或False来指出是否按相反的顺序排序
x.sort(reverse=True)
print(x)
元组与列表的唯一差别是元组不能修改
>>>1, 2, 3
(1, 2, 3)
#还可以用圆括号扩起
>>>(1, 2, 3)
(1, 2, 3)
#空元组用两个不包含任何内容的圆括号表示
>>>()
()
#只包含一个元素的元组后**面必须加上逗号**
>>>42,
(42,)
tuple
>>> tuple([1, 2, 3])
(1, 2, 3)
元组访问方式与其他序列相同
#一些函数
函数 | 描述 |
---|---|
len(seq) | 返回序列的长度 |
list(seq) | 将序列转换为列表 |
max(args) | 返回序列或一组参数中的最大值 |
min(args) | 返回序列和一组参数中的最小值 |
reversed(seq) | 让你能够反向迭代序列 |
sorted(seq) | 返回一个有序列表,其中包含指定序列中的所有元素 |
tuple(seq) | 将序列转换为元组 |