小编use*_*514的帖子

为什么"如果我<10 else传递返回100"在python中无效?

所有;

def foo(i):
    return 100 if i < 10 else pass
    return 200 if i < 20 else pass
    return 1
Run Code Online (Sandbox Code Playgroud)

为什么这在python中不起作用?我想这段代码可能与以下内容相同:

def foo(i):
    if i < 10:
        return 100
    elif i < 20:
        return 200
    else: 
        return 1
Run Code Online (Sandbox Code Playgroud)

谢谢!

python if-statement

5
推荐指数
3
解决办法
3693
查看次数

lambda推送到列表然后调用 - 输出不是预期的

所有:

def a(p): 
    return p+1 

def gen(func, k=100): 
    l= [] 
    for x in range(k): 
       temp = ("%s_with_parameter_%s" %(func.__name__, x), lambda: func(x)) 
       # maybe this will be more clear to explain my quetion: 
       # i want to get list/dict which can bind self-defined string and function together 
       l.append(temp) 
    return l 

l = gen(a, 100) 

for x in range(len(l)): 
   l[x][1]()                

100
100
100
100
100
100
100
100
Run Code Online (Sandbox Code Playgroud)

...我想输出将是1 to 101打印输出,但它显示了一个100列表.

我可以在这里获得这个片段的帮助吗?

谢谢!

python lambda

3
推荐指数
1
解决办法
272
查看次数

需要一个简单的方法将元信息/类添加到python列表/元组变量?

所有,

我希望将简单的元信息包含在列表对象中,请参阅下面的代码.

>>> a = []
>>> a.foo = 100
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
AttributeError: 'list' object has no attribute 'foo'
>>> setattr(a,"foo",100)
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
AttributeError: 'list' object has no attribute 'foo'
>>> dir(a)
...
 '__setattr__',
 '__setitem__',
...
Run Code Online (Sandbox Code Playgroud)

我的问题是

  1. 为什么我不能将setattr()用于变量"a",因为列表应该已经具有' setattr '功能?

  2. 是否有一种简单的方法将元信息附加到list/tuple变量而不是重载' setattr '或将该列表嵌入到dict中?

谢谢!

python meta list setattr

3
推荐指数
1
解决办法
655
查看次数

为什么python中的00100 = 64?

为什么,像在下面的python代码中,00100相同64

>>> i = 00100
>>> i
64
>>> type(00100)
<type 'int'>
>>> str(00100)
'64'
>>> str("00100")
'00100'
>>> int(str("00100"))
100
>>> 
Run Code Online (Sandbox Code Playgroud)

python int

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

将int转换为单个数字列表更快?

所有,

我想定义一个int(987654321)<=> [9,8,7,6,5,4,3,2,1]转换器,如果int number的长度<9,例如10,则列表将为[0 ,0,0,0,0,0,0,1,0] ,如果长度> 9,例如9987654321,则列表为[9,9,8,7,6,5,4,3, 2,1]

>>> i
987654321
>>> l
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> z = [0]*(len(unit) - len(str(l)))
>>> z.extend(l)
>>> l = z
>>> unit
[100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10, 1]

>>> sum([x*y for x,y in zip(l, unit)])
987654321
>>> int("".join([str(x) for x in l]))
987654321


>>> l1 = [int(x) for x in str(i)]
>>> z = [0]*(len(unit) - …
Run Code Online (Sandbox Code Playgroud)

python string int list converter

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

使用itertools来降低四个"for"stmt的复杂性?

我列出了4个清单:

list1, list2, list3, list4 = range(0,4), range(4,9), range(8,15), range(2,16)
# just using range() generate sample data  
Run Code Online (Sandbox Code Playgroud)

我可以list1_item, list2_item, list3_item, list4_item通过以下代码按顺序列出所有项目组合:

for item1 in list1:
    for item2 in list2:
        for item3 in list3:
             for item4 in list4:
                   print [item1, item2, item3, item4]
Run Code Online (Sandbox Code Playgroud)

我可以知道我是否可以通过itertools模块完成这项工作?

谢谢

python combinations python-itertools

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