考虑下面的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) 如果我有任意顺序的卡套装列表,如下所示:
suits = ["h", "c", "d", "s"]
Run Code Online (Sandbox Code Playgroud)
我想要返回一个没有的列表 'c'
noclubs = ["h", "d", "s"]
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法来做到这一点?
考虑到内置的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