Python 如果x!=';/';,这意味着什么:[x[1:]表示self.files中的x]
这意味着什么:Python 如果x!=';/';,这意味着什么:[x[1:]表示self.files中的x],python,functional-programming,Python,Functional Programming,这意味着什么: [x[1:] for x in self.files if x != '/'] 如果可能的话,您是否介意用命令式等效语句解释它?它构造了一个新列表,其中的元素是变量self.files中的文件名片段,不包括根目录的文件名。每个片段由文件名中的n-1个字母组成,从第二个字母(字符串中的第二个字母的索引为1)到最后一个。 这段代码的命令式等价物将更加详细: lst = [] for x in self.files: if x != "/": lst.appe
[x[1:] for x in self.files if x != '/']
如果可能的话,您是否介意用命令式等效语句解释它?它构造了一个新列表,其中的元素是变量self.files
中的文件名片段,不包括根目录的文件名。每个片段由文件名中的n-1个字母组成,从第二个字母(字符串中的第二个字母的索引为1)到最后一个。
这段代码的命令式等价物将更加详细:
lst = []
for x in self.files:
if x != "/":
lst.append(x[1:])
同:
ret = []
for x in self.files:
if x != '/':
ret.append(x[1:])
return ret
让我们一步一步地看这个表达式。此部分返回当前对象中的文件列表:
self.files
现在,让我们迭代列表,依次调用x
每个元素:
for x in self.files
<> P>但不要把它们全部拿来,让我们来考虑那些不被称为“代码>”/“<代码> >:
for x in self.files if x != '/'
对于通过筛选的每个文件,让我们删除文件名中的第一个字符:
x[1:] for x in self.files if x != '/'
最后,让我们将结果放在一个新列表中:
[x[1:] for x in self.files if x != '/']
仅供参考,我们刚才所做的叫做。正如@PasteBT和@aga所指出的,代码相当于这个显式循环:
ans = [] # create a new empty list
for x in self.files: # iterate over it, using x as variable
if x != '/': # if the element is not 'x'
ans.append(x[1:]) # add it after removing 1st char
现在,ans
将包含与列表理解返回的列表相同的列表。先生,您是位绅士、学者和科学家。我会叫你el flamo blanco。谢谢你的帮助!我被删除第一个字符的步骤甩了,因为它只是一种坐在前面,没有任何迹象表明它在操作哪个处理步骤。而且我是函数式编程的高手。再次感谢!这个函数版本将是map(lambda s:s[1:],filter(partial(ne,“/”),self.files))
。请注意,每个函数的输出仅依赖于其输入,并且没有副作用。你所拥有的只是一个简单的列表理解。啊,这不是一个功能性的“范例”,但它越来越近了!感谢这正是我想要的。结合以上步骤,我的jimmies就不再沙沙作响了。