1、列表增加,删除
offer_list=['Allen','Tom']
for i in offer_list:
print('{}, you have passed our interview and will soon become a member of our company.'.format(i))
offer_list.remove('Tom')
offer_list.append('Andy')
for j in offer_list:
print('{}, welcome to join us!'.format(j))
2、使用split()函数,将字符串按照特定的字符拆分成列表。
str1=input()
print(str1.split()) # 按照空格拆分字符串
3、列表推导式
输入描述: 输入一行整数,数字之间以空格间隔。 输出描述: 输出这些数字组成的完整列表 number = input()
num = number.split()
print(list(num)) 代码哪里错了?因为输出的是字符串,不是数字。
修改:
number = input()
num = number.split()
num = [int(n) for n in num] # 加这个
print(list(num))
4、list.append()
方法,返回值是none,不要赋值
name = input().split()
name = [n for n in name]
print(name)
name = name.append('Allen')
print(name)
name = input().split()
name = [n for n in name]
print(name)
name = name.append('Allen')
print(name)
Niuniu Niumei Lucy Niuneng
['Niuniu', 'Niumei', 'Lucy', 'Niuneng'] None
问题:修正后的代码应该是去掉不必要的列表推导式 ,为什么加了这一步就不行了?
在Python中,list.append()
方法用于在列表末尾添加元素,它直接修改原列表而不会返回任何值(也就是返回 None
)。因此,当你尝试将 append()
方法的结果赋值给 name
变量时,实际上你将 name
的值设置为了 None
。
第二步中的列表推导式实际上是冗余的,因为name = input().split()
已经将输入的字符串按空格拆分成了一个列表。列表推导式 [n for n in name]
相当于遍历列表 name
中的每一个元素 n
,并将每一个 n
放入一个新列表中,这个过程实际上没有改变任何数据结构或元素内容,只是徒增了计算量,因此是不必要的。
所以,去掉了这一步之后,代码直接使用 input().split()
得到的列表,并对其进行后续操作,既简化了代码,又提高了效率。修正后的代码直接进行 name.append('Allen')
操作,将 'Allen'
添加到列表中,而不会出现因误将 None
赋值给 name
导致的问题。
代码中有一个小错误,list.append()
方法会直接修改列表并在原列表上添加元素,但它不会返回任何值(也就是返回 None
)。所以代码中,name = name.append('Allen')
这一行执行后,name
变成了 None
,导致最后打印出的是 None
而不是修改后的列表。
修正后的代码应该如下所示:
1name = input().split() # 通过空格分割输入的字符串,创建名字列表
2name.append('Allen') # 在列表末尾添加 'Allen'
3print(name) # 输出添加完Allen后的完整列表
这样修改后,当你输入多个以空格分隔的名字,程序会正确地在这些名字后面添加 "Allen" 并输出完整的列表。
5、列表删除
方法一:使用pop删除【pop后跟下标值】
1 2 3 |
|
方法二:使用remove删除【remove后跟元素值】
list.remove()
方法会直接修改列表并删除指定的元素,但该方法不返回任何值,因此将其打印出来会得到 None:
# 使用remove函数从列表中删除这个好友
8friends.remove(enemy)
9
10# 输出删除好友后的完整列表
11print(friends)
1 2 3 |
|