牛客刷题【列表】

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

s = input().split()

s.pop(0)#删除s列表中下标为0的元素

print(com)

方法二:使用remove删除【remove后跟元素值】

list.remove() 方法会直接修改列表并删除指定的元素,但该方法不返回任何值,因此将其打印出来会得到 None:

# 使用remove函数从列表中删除这个好友
8friends.remove(enemy)
9
10# 输出删除好友后的完整列表
11print(friends)

1

2

3

com = input().split()

com.remove(com[0])

print(com)

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值