相关疑难解决方法(0)

是Python列表理解,可以访问索引/枚举吗?

考虑下面的Python代码,我在新的list2中添加了所有项目,索引从list1的1到3:

for ind, obj in enumerate(list1):
    if 4> ind > 0: list2.append(obj)
Run Code Online (Sandbox Code Playgroud)

如果我无法通过枚举访问索引,你会如何使用python list comprehension编写这个?

就像是:

list2 = [x for x in list1 if 4>ind>0]
Run Code Online (Sandbox Code Playgroud)

但由于我没有'ind'号码,这会有效吗?:

list2 = [x for x in enumerate(list1) if 4>ind>0]
Run Code Online (Sandbox Code Playgroud)

python indexing list-comprehension list

79
推荐指数
4
解决办法
5万
查看次数

在Python中没有特定元素的快速返回列表的方法

如果我有任意顺序的卡套装列表,如下所示:

suits = ["h", "c", "d", "s"]
Run Code Online (Sandbox Code Playgroud)

我想要返回一个没有的列表 'c'

noclubs = ["h", "d", "s"]
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法来做到这一点?

python

36
推荐指数
6
解决办法
6万
查看次数

Python LIST函数不返回新列表

考虑到内置的Python List方法,我遇到了一个问题.

当我学习Python时,我一直认为Python mutators,就像任何值类mutator应该做的那样,返回它创建的新变量.

举个例子:

a = range(5)
# will give [0, 1, 2, 3, 4]
b = a.remove(1)
# as I learned it, b should now be [0, 2, 3, 4]
# what actually happens:
# a = [0, 2, 3, 4]
# b = None
Run Code Online (Sandbox Code Playgroud)

这个列表mutator没有返回新列表的主要问题是你不能随后发生多个突变.假设我想要一个范围从0到5的列表,没有2和3. Mutators返回新变量应该能够这样做:

a = range(5).remove(2).remove(3)
Run Code Online (Sandbox Code Playgroud)

可悲的是,这是不可能的range(5).remove(2) = None.

现在,有没有办法在列表上实际进行多次突变,就像我想在我的例子中做的那样?我认为即使是PHP也允许使用Strings进行这些类型的后续突变.

我也找不到所有内置Python函数的好参考.如果有人能找到所有列表mutator方法的实际定义(带有返回值),请告诉我.我能找到的就是这个页面:http://docs.python.org/tutorial/datastructures.html

python list

4
推荐指数
2
解决办法
7189
查看次数

标签 统计

python ×3

list ×2

indexing ×1

list-comprehension ×1