Python,如何从一个列表中删除一个项目并将其添加到另一个列表?

时间:2018-04-27 01:47:18

标签: python-3.x

我想说我是初学者,所以请耐心等待我。

问题:

1 即可。如何从list(firstlist)中删除项目,然后将其添加到另一个list(secondlist)

firstlist = ['a', 'b', 'c', 'd']

secondlist = []

2 即可。如何使用pop()remove(),以及如何在这种情况下使用它?

所以我想知道,这本书告诉我,我将使用pop()方法的项目索引。

firstlist.pop(1)

如果我知道项目的价值,我可以使用remove()方法。

firstlist.remove('b')

使用remove()方法会不会更容易?希望这是有道理的。

编辑:假设列表中有名称。我该如何处理?

2 个答案:

答案 0 :(得分:0)

当你使用pop,python删除索引并返回item的值时,在remove方法中它不会发生:

given(" account check view model") {
  val accountCheckRequest by memoized {
    mock<CheckExistingAccountRequest>() {
      on { email }.thenReturn("foo@mail")
    }
  }
  val accountCheckResponse by memoized {
    mock<CheckExistingAccountResponse>() {
      on { firstName }.thenReturn("foo")
      on { email }.thenReturn("foo@mail")
    }
  }
  val webService by memoized {
    mock<IAPICalls> {
      on { checkExistingAccount(accountCheckRequest) }.thenReturn(Flowable.just(accountCheckResponse))
    }
  }

  val accountCheckViewModel by memoized {
    spy(VMAccountCheck(webService))
  }

  on("api success") {
    accountCheckViewModel.checkIfAccountExists(request = accountCheckRequest)

    it("should call live data with first name as foo") {
      verify(accountCheckViewModel, times(1)).updateLiveData(accountCheckResponse.firstName, accountCheckResponse.email, null)
    }
  }
}

输出

first_list=[1,2,3]
second_list=[]
second_list.append(first_list.pop(2))
print(second_list)

输出

[3]

print(first_list)

但删除最容易比弹出,使用值是最好的方法,但有时我们需要使用索引,我喜欢pop因为返回item的值。

我希望得到帮助

答案 1 :(得分:0)

要从一个列表中删除并使用这两种方法添加到另一个列表,您可以执行以下任一操作:

<强>弹出

secondlist.append(firstlist.pop(1))

删除

item = 'b'

firstlist.remove(item)
secondlist.append(item)

至于为什么一种方法优于另一种方法,它在很大程度上取决于列表的大小以及要删除的项目。假设您的列表为firstlist = ['a', 'b', 'c', 'd']

如果您要删除第一项,则remove将比pop更快

firstlist.pop(0)
183 ns ± 4.64 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

firstlist.remove('a')
130 ns ± 2.45 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

但是如果你想删除最后一项,那么pop会更快

firstlist.pop(3)
161 ns ± 2 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

firstlist.remove('d')
182 ns ± 5.1 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

这是因为,正如评论中所提到的,remove将在整个列表中搜索该项目的第一次出现。对于更长的列表,这种差异将被放大:

firstlist = [x for x in 'abcdefghijklmnopqrstuvwxyz']

firstlist.pop(25)
938 ns ± 19.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

firstlist.remove('z')
1.28 µs ± 21.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)