列表
基本操作
- 用
[ ]表示列表,并用逗号分隔其中的元素,是有序集合
>>> names = ['Kelly', 'Yuwenwen', 'Yuwanwan']
>>> print(names)
['Kelly', 'Yuwenwen', 'Yuwanwan']
print列表时,输出包括方括号
>>> print(names[0])
Kelly
>>> print(names[1].upper())
YUWENWEN
>>> print(names[-1])#返回导数第一个元素
Yuwanwan
>>> print(f"{names[0]} is good at singing")
Kelly is good at singing
注意,Python中第一个列表的索引为0,而不是1。在R语言中,第一个索引为1。
- 修改列表
>>> names[0] = "Yumenmen"
>>> print(names)
['Yumenmen', 'Yuwenwen', 'Yuwanwan']
>>> names.append("Kelly")#在末尾添加
>>> print(names)
['Yumenmen', 'Yuwenwen', 'Yuwanwan', 'Kelly']
>>> names.insert(0,"xiaohuihui")
>>> print(names)
['xiaohuihui', 'Yumenmen', 'Yuwenwen', 'Yuwanwan', 'Kelly']
>>> del names[0]
>>> print(names)
['Yumenmen', 'Yuwenwen', 'Yuwanwan', 'Kelly']
- 关于pop()
>>> print(names)
['Yumenmen', 'Yuwenwen', 'Yuwanwan', 'Kelly']
>>> popped_names = names.pop() #括号内没有指定的索引时,删除最末尾的元素并赋值到新的变量中
>>> print(names)
['Yumenmen', 'Yuwenwen', 'Yuwanwan']
>>> print(popped_names)
Kelly
>>> first_name = names.pop(0)
>>> first_name
'Yumenmen'
>>> names
['Yuwenwen', 'Yuwanwan']
如果你要从列表中删除一个元素,且不再以任何方式使用它,就用del();如果你要在删除元素后还能继续使用它,就用方法pop()
- 根据值删除元素
>>> names
['Yuwenwen', 'Yuwanwan']
>>> names.remove("Yuwanwan")
>>> names
['Yuwenwen']
有时候不知道从列表中删除的值所处的位置,只知道它的值:用remove()
注意:方法remove()只删除第一个指定的值。如果需要删除的值在列表中出现多次,就需要使用循环来保证每个值都被删除。
总结
组织列表
-
sort(): 按照字母顺序永久排序
>>> invitation
['kylin', 'kelly', 'pangzi', 'xiaohua']
>>> invitation.sort()
>>> invitation
['kelly', 'kylin', 'pangzi', 'xiaohua']
>>> invitation.sort(reverse=True)
>>> invitation
['xiaohua', 'pangzi', 'kylin', 'kelly']
-
sorted():按照字母顺序对列表临时排序 -
reverse():反转列表元素的排列顺序 -
len():确定列表的长度
>>> names = ["qqw", "ddde","eeeet"]
>>> names
['qqw', 'ddde', 'eeeet']
>>> sorted(names)
['ddde', 'eeeet', 'qqw']
>>> names
['qqw', 'ddde', 'eeeet']
>>> names.reverse()
>>> names
['eeeet', 'ddde', 'qqw']
>>> len(names)
3
遍历整个列表
>>> for name in names:
... print(name)
...
eeeet
ddde
qqw
>>> for name in names:
... print(f"{name}, you are wonderful!")
... print(f"hope to see {name} again!\n")
...
eeeet, you are wonderful!
hope to see eeeet again!
ddde, you are wonderful!
hope to see ddde again!
qqw, you are wonderful!
hope to see qqw again!
在for循环后面,没有缩进的代码都只执行一次,不会重复执行
小心缩进!!
Python通过缩进判断代码与前一个代码行的关系
for语句后面不要忘了冒号!!
创建数值列表
range()
for value in range(1,5):
print(value)
1
2
3
4
numbers = list(range(2,6))
numbers
[2, 3, 4, 5]
注意:range()左闭右开,这是编程语言中常见的差一行为的结果
range(6)会返回0-5
另外,range()还可以指定步长
nums = list(range(2,11,2))#表示从2开始数,然后不断加2,知道达到或超过11
nums
[2, 4, 6, 8, 10]
nums = []
for value in range(1,11):
nums.append(value**2)
print(nums)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print(min(nums))
print(max(nums))
print(f"The sum of the list is: {sum(nums)}")
1
100
The sum of the list is: 385
-
列表解析
上面的语句可以简化为:
nums = [value**2 for value in range(1,11)]#for语句末尾没有冒号
nums
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
要使用这种语法,首先指定一个描述性的列表名,如nums。然后指定一个左方括号,并定义一个表达式,用于生成要存储到列表的值。在这个示例中,表达式为value**2。接下来写一个for循环,用于给表达式提供值,再加上有括号。
切片
>>> names
['aaa', 'bbb', 'ccc', 'sss']
>>> print(names[0])
aaa
>>> print(names[0:3])#提取0,1,2号值,依然是左闭右开
['aaa', 'bbb', 'ccc']
>>> print(names[:3])#提取前三个
['aaa', 'bbb', 'ccc']
>>> print(names[-3:])
['bbb', 'ccc', 'sss']
>>> nums
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> nums[1:12,1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not tuple
>>> nums[1:12:2]#第三个值表示步长,即每隔多少个元素提取一个
[1, 3, 5, 7, 9]
复制列表
>>> nums[1:12:2]
[1, 3, 5, 7, 9]
>>> nums
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> nums2 = nums[:]
>>> nums2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> nums3 = nums#错误的方法!!!!!
>>> nums3
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> nums.append(12)
>>> nums
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12]
>>> nums2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> nums3
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12]
>>> nums2.append(13)
>>> nums
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12]
>>> nums2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13]
>>> nums3
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12]
>>> nums3.append(14)
>>> nums3
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14]
>>> nums
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14]
>>> nums2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13]
对于nums3的那种“复制”方法,不是将nums的副本赋值给新的列表,实际上是将新变量关联到nums上,因此这两个变量指向同一个列表。因此无论是nums变化还是nums3变化,另一个都会同步变化!!!
元组(tuple)
- Python将不能修改的值称为不可变的,而不可变的列表被称为元组。
- 元组看起来很像列表,但使用圆括号而非中括号来标识。
dimensions = (200,60)
lens = (18,)
- 注意,严格地说,元组是由逗号标识的,圆括号只是让元组看起来更整洁、更清洗。如果你要定义只包含一个元素的元组,必须在这个元素后面加上逗号
其他注意事项:
- 缩进一般使用四个空格,如果是使用tab,需要在编辑器中设置tab=四个空格。在程序中混合使用制表符和空格可能导致极难排查的问题。










网友评论