私信  •  关注

iz_

iz_ 最近创建的主题
iz_ 最近回复了
7 年前
回复了 iz_ 创建的主题 » python:我如何反转字符串的前两个字符?

拆分时不包括结尾,因此请执行以下操作:

>>> word = 'abc'
>>> word[1::-1]
'ba'

把中间的空着可以解决你的问题。

7 年前
回复了 iz_ 创建的主题 » python-如何检查/发现列表有引用?

你可以使用 id 功能:

>>> a = [[0] * 4] * 4
>>> a
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>> [id(sublist) for sublist in a]
[1975671202696, 1975671202696, 1975671202696, 1975671202696]
>>> b = [[0 for i in range(4)] for i in range(4)]
>>> b
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>> [id(sublist) for sublist in b]
[1975671204808, 1975671205128, 1975671205000, 1975671204872]

正如你所看到的 a ,ID都是相同的,而在 b ,它们是不同的。

6 年前
回复了 iz_ 创建的主题 » 在依赖于前面元素的python中创建列表

我会尽量避免所有助手函数,特别是因为它们使用 global (如果必须使用,这不是一个好迹象!).

from random import randint

INNER_LIST_SIZE = 5
OUTER_LIST_SIZE = 3
THRESHOLD = 5

li = [[*seq, sum(x for x in seq[1:] if x > THRESHOLD)] for seq in ([idx, *(randint(1, 10) for _ in range(INNER_LIST_SIZE - 2))] for idx in range(OUTER_LIST_SIZE))]

带评论的美化:

li = [
    # append the sum at the end
    [*seq, sum(x for x in seq[1:] if x > THRESHOLD)]
    # iterate through a generator that generates sequences of [index] + [random ints]
    for seq in (
        # list with [index, randint1, randint2, randint3, ...]
        [idx, *(randint(1, 10) for _ in range(INNER_LIST_SIZE - 2))]
        for idx in range(OUTER_LIST_SIZE)
    )
]
6 年前
回复了 iz_ 创建的主题 » python:为什么复制b=list(a)的列表后id会改变?

list 创建参数的新副本。它期望一个iterable,并将iterable的所有元素消耗到 新的 名单。

如果您需要引用同一列表的其他引用/名称,只需使用赋值而不调用 列表 .

a = [1,2,3]
b = a
print(id(b) == id(a))  # True
6 年前
回复了 iz_ 创建的主题 » 如何从Python类中的实例变量中获取所有值的列表

如果你有这个:

class HTTP_HEADER:
    ACCEPT = "X-Accept"
    DECLINE = "X-Decline"

names = ["ACCEPT", "DECLINE"]

获取价值只是一个简单的问题

values = [getattr(HTTP_HEADER, name) for name in names]

不过,我认为字典更合适,只需对原始代码进行最小的更改即可:

members = {
        k: v for k, v in vars(HTTP_HEADER).items()
        if not callable(v)
        and not k.startswith("__")
    }

哪个给了

{'ACCEPT': 'X-Accept', 'DECLINE': 'X-Decline'}