《Python编程:从入门到实践》-2 列表list和元组tup

2022-08-20  本文已影响0人  Yayamia

列表

基本操作

>>> 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']
>>> 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()只删除第一个指定的值。如果需要删除的值在列表中出现多次,就需要使用循环来保证每个值都被删除。

总结

组织列表

>>> invitation
['kylin', 'kelly', 'pangzi', 'xiaohua']
>>> invitation.sort()
>>> invitation
['kelly', 'kylin', 'pangzi', 'xiaohua']
>>> invitation.sort(reverse=True)
>>> invitation
['xiaohua', 'pangzi', 'kylin', 'kelly']
>>> 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语句后面不要忘了冒号!!

创建数值列表

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)

dimensions = (200,60)
lens = (18,)

其他注意事项:

上一篇 下一篇

猜你喜欢

热点阅读