python(2)--列表和元组
python(2)--列表和元组
序列
>>> person1 = ['Tom',100]
>>> person2 = ['Jerry',100]
>>> datas = [person1,person2]
>>> datas
[['Tom', 100], ['Jerry', 100]]
索引
【0~n-1】
>>> str = 'hello'
>>> str[0]
'h'
>>> str[-1]
'o'
def main():
months = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
]
endings = ['st','nd','rd'] + 17 * ['th'] \
+ ['st','nd','rd'] + 7 * ['th'] \
+ ['st']
year = input('Year: ')
month = input('Month(1-12): ')
day = input('Day(1-31): ')
month_num = int(month)
day_num = int(day)
month_name = months[month_num - 1]
ordinal = day + endings[day_num - 1]
print(month_name + ' ' + ordinal + ', ' + year)
if __name__ == '__main__':
main()
切片
取某个范围的值
>>> nums = [1,2,3,4,5,6,7,8,9,10]
# 取 [n,m)区间的元素
>>> nums[3:6]
[4, 5, 6]
# 倒序取元素
>>> nums[-3:]
[8, 9, 10]
# nums[0:2]
>>> nums[:2]
[1, 2]
# 复制整个序列
设置步长
# 如果显式指定步长步长不能为0
# 设置步长为n,则元素间间隔n-1个元素
>>> nums[0:10:2]
[1, 3, 5, 7, 9]
# 步长为负数表示从右向左提取元素
>>> nums[::-2]
[10, 8, 6, 4, 2]
序列运算
# 加法 拼接两个相同类型的序列
>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
# 乘法 构造一个新的序列
>>> 'hello' * 3
'hellohellohello'
>>> [12] * 4
[12, 12, 12, 12]
# None 空列表初始化
>>> seq = [None] * 5
>>> seq
[None, None, None, None, None]
def main():
strs = input("strs: ")
screen_width = 80
text_width = len(strs)
box_width = text_width + 6
left_margin = (screen_width - box_width) // 2
print()
print(' ' * left_margin + '+' + '-' * (box_width-2) + "+")
print(' ' * left_margin + '| ' + ' ' * text_width + ' |')
print(' ' * left_margin + '| ' + strs + ' |')
print(' ' * left_margin + '| ' + ' ' * text_width + ' |')
print(' ' * left_margin + '+' + '-' * (box_width - 2) + "+")
print()
if __name__ == '__main__':
main()
成员检查
检查成员是否包含在序列中
# 字符串
>>> permit = 'rw'
>>> 'r' in permit
True
# 序列
>>> users = ['Tom','Alice']
>>> input('user name: ') in users
user name: Tom
True
def main():
database = [
['Tom','123'],
['Jerry','456']
]
username = input("username: ")
password = input("password: ")
# 简单模拟登陆校验
if[username,password] in database:
print('Access system')
if __name__ == '__main__':
main()
其他序列操作
>>> nums = [15,3,100]
>>> len(nums)
3
>>> min(nums)
3
>>> max(nums)
100
# min max可以直接用于序列实参
列表
列表是可变的
# =将任意序列或者字符串作为list参数
>>> list('hello')
['h', 'e', 'l', 'l', 'o']
修改列表
>>> l = [1,2,3]
>>> l[1] = 1
>>> l
[1, 1, 3]
删除元素
>>> l
[1, 1, 3]
>>> del l[1]
>>> l
[1, 3]
切片赋值
>>> name = list('Alice')
>>> name
['A', 'l', 'i', 'c', 'e']
# 赋值可以修改列表,或者直接替换原有列表
>>> name[3:] = list('ly')
>>> name
['A', 'l', 'i', 'l', 'y']
>>> nums = [1,5]
# 插入新元素
>>> nums[1:1] = [2,3,4]
>>> nums
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
>>> nums[1:4] = []
>>> nums
[1, 5]
其他相关方法
# 在末尾附加元素 append()
>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
# 拷贝列表 lst2关联到的是lst的副本
# lst2 = lst常规复制指向的是同一列表
>>> lst
[1, 2, 3, 4]
>>> lst2 = lst.copy()
>>> lst2[3] = 5
>>> lst2
[1, 2, 3, 5]
>>> lst
[1, 2, 3, 4]
# 清空列表 clear()
[1, 2, 3, 4]
>>> lst.clear()
>>> lst
[]
# 统计元素在列表中的出现次数
>>> x = [[1,2],1,1,[2,1,[1,2]]]
>>> x.count(1)
2
>>> x.count([1,2])
1
拼接两个list
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
>>> c = [7,8,9]
# +拼接返回的是一个新数组,效率比extend低 b = b + c
>>> b + c
[4, 5, 6, 7, 8, 9]
>>> b
[4, 5, 6]
#返回查找列表中的值第一次出现的位置
>>> hello = ['hello','say','hi']
>>> hello.index('hi')
2
# 在某个元素后插入一个元素
>>> numbers = [1,2,3]
>>> numbers.insert(2,'seven')
>>> numbers
[1, 2, 'seven', 3]
# 类似于栈的后进先出操作
>>> x = [1,2,3]
>>> x.pop()
3
>>> x
[1, 2]
>>>
# 指定弹出位置
>>> x.pop(0)
1
>>> x
[2]
>>>
# 类似栈的push()操作
>>> x
[2]
>>> x.append(x.pop())
>>> x
[2]
# 移除一个元素
>>> x = ['I','am','hero']
>>> x.remove('I')
>>> x
['am', 'hero']
# 反转列表
>>> x = [1,2,3]
>>> x.reverse();
>>> x
[3, 2, 1]
>>>
排序
# sort() 升序排序,对原来的序列排序
>>> x = [5,3,8,2,1]
>>> x.sort()
>>> x
[1, 2, 3, 5, 8]
>>> x = [5,3,8,2,1]
>>> y = x.copy()
>>> y.sort()
>>> y
[1, 2, 3, 5, 8]
>>> x
[5, 3, 8, 2, 1]
# sorted() 排序,返回一个副本
>>> x = [5,3,8,2,1]
>>> y = sorted(x)
>>> y
[1, 2, 3, 5, 8]
>>> x
[5, 3, 8, 2, 1]
# 指定排序条件
>>> x = ['aa','a','aaaaa']
# 按元素条件
>>> x.sort(key=len)
>>> x
['a', 'aa', 'aaaaa']
>>> x = [4,6,2,1,7,9]
# 逆序
>>> x.sort(reverse=True)
>>> x
[9, 7, 6, 4, 2, 1]
元组
不可变的唯一序列
在映射中,元组作为键值;
元组访问方式和列表相同;
内置的函数和方法会返回元组;
元组的切片仍然是元组;
不要试图修改元组。
>>> 1,2,3
(1, 2, 3)
# 常规创建元组的方式
>>> (4,5,6)
(4, 5, 6)
# 单值元组,一定要加上,
>>> 42,
(42,)
#空元组
>>> ()
()
>>> 3 * (20 + 2,)
(22, 22, 22)
# 将一个list转换为一个元组
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')

浙公网安备 33010602011771号