小编mrC*_*ore的帖子

python中不满足条件时不创建对象?

如果类的构造函数不满足某些条件,是否可以不创建对象?

例如:

class ABC:
    def __init__(self, a):
        if a > 5:
            self.a = a
        else:
            return None

a = ABC(3)
print(a)
Run Code Online (Sandbox Code Playgroud)

这应该打印None(因为它不应该创建对象但None在这种情况下返回)但当前打印对象...

python class python-3.x

4
推荐指数
1
解决办法
1546
查看次数

Python列表理解具有可变长度的多个元素?

我正在编写代码将CSV转换为XML.假设我有一个列表,如:

input = ['name', 'val', 0, \
         'name', 'val', 1, 'tag', 'val', \
         'name', 'val', 2, 'tag', 'val', 'tag', 'val', \
         'name', 'val', 0]
Run Code Online (Sandbox Code Playgroud)

此列表的每个切片以"name"开头,表示具有名称,值和可变标记值对的可变数量的元素.

我想把它变成:

output = [['name', 'val', []], 
          ['name', 'val', ['tag', 'val']],
          ['name', 'val', ['tag', 'val', 'tag', 'val']],
          ['name', 'val', []]]
Run Code Online (Sandbox Code Playgroud)

无需将标记值对分隔为元组,这是在单独的方法中处理的.我有一个解决方案,但它不是非常pythonic:

output=[]
cursor=0

while cursor < len(input):
    name=input[cursor]
    val=input[cursor+1]
    ntags=int(input[cursor+2])
    optslice=input[cursor+3:cursor+3+2*ntags]
    cursor = cursor+3+2*ntags
    print name, val, ntags, optslice, cursor
    output.append([name, val, optslice])    
print output

> name val 0 [] 3
> name val 1 ['tag', …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension python-2.7

2
推荐指数
1
解决办法
624
查看次数

从大的单词列表中构建字符串

我不知道这个algmayy的类型是有名的..

我听了这个表格

L = [ ["a"] , ["b"] , ["c"] ] , [ ["d"] , ["e"] , ["f"] ] , ["g"], ["h"], ["i"] ] ,[ ["j"] , ["k"] , ["l"] ]
Run Code Online (Sandbox Code Playgroud)

字母是单词,L的长度可以是2到50个元素,但列表中的长度总是3个元素.

我想创建一个构建所有这个字符串的列表:

"adgj"
"adgk"
"adgl"
"adhj"
"adhk"
"adhl"
"adij"
"adik"
"adil"
"aegj"
Run Code Online (Sandbox Code Playgroud)

一路走来 "cfil"

谁能告诉我该做什么或在哪里寻找?

非常感谢你的帮助..

python search design-patterns

2
推荐指数
1
解决办法
69
查看次数