小编Jim*_*ard的帖子

将List <int>转换为逗号分隔值的字符串

有一个List<int>整数(例如:) 1 - 3 - 4我怎么能用这种类型的字符串转换它?

例如,输出应为:

string values = "1,3,4";
Run Code Online (Sandbox Code Playgroud)

c# list

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

在Python中使用变量名称后下划线

我正在破译其他人的代码,我看到以下内容:

def get_set_string(set_):
     if PY3:
         return str(set_)
     else:
         return str(set_)
Run Code Online (Sandbox Code Playgroud)

变量后面的下划线是什么意思,或者这只是变量名称的一部分而没有任何意义?

python naming-conventions python-3.x

19
推荐指数
2
解决办法
5906
查看次数

为什么Python中的可变值枚举相同的对象?

在为Enum成员试验不同的值类型时,我发现当值是可变的时会有一些奇怪的行为.

如果我将一个值定义Enum为不同的列表,那么成员的行为仍然类似于Enum值是典型的不可变类型,如strint,即使我可以更改成员的值,以便两个Enum成员的值相同:

>>> class Color(enum.Enum):
        black = [1,2]
        blue = [1,2,3]  

>>> Color.blue is Color.black
False
>>> Color.black == Color.blue
False
>>> Color.black.value.append(3)
>>> Color.black
<Color.black: [1, 2, 3]>
>>> Color.blue
<Color.blue: [1, 2, 3]>
>>> Color.blue == Color.black
False
>>> Color.black.value == Color.blue.value
True
Run Code Online (Sandbox Code Playgroud)

但是,如果我将值定义为相同的列表,则每个成员的值似乎是同一个对象,因此一个成员的值的任何突变都会影响所有成员:

>>> class Color(enum.Enum):
        black = [1,2,3]
        blue = [1,2,3]

>>> Color.blue is Color.black
True
>>> Color.black == Color.blue
True
>>> …
Run Code Online (Sandbox Code Playgroud)

python enums identity python-3.x

18
推荐指数
2
解决办法
717
查看次数

在switch字典中执行函数

将我开发的所有模块放入主程序时遇到问题.我创建的切换词典如下所示:

def Tank_Shape_Calcs(Tank_Shape, level, area, dish, radius, length, Strapping_Table, Tank_Number):

    switcher = {
        0: vertical.Vertical_Tank(level, area),
        1: horiz.Horiz_Cylinder_Dished_Ends(dish, radius, level, length),
        2: strapping.Calc_Strapped_Volume(Strapping_Table, level),
        3: poly.Fifth_Poly_Calcs(Tank_Number)
    }
    return switcher.get(Tank_Shape, "ERROR: Tank type not valid")
Run Code Online (Sandbox Code Playgroud)

罐形状在主文件中设置为每个罐的循环.第一辆坦克Tank_Shape = 2我希望它能执行这个Calc_Strapped_Volume()功能.

我曾尝试测试它,和切换功能绝对是读书Tank_Shape2.此外,如果我将函数更改为字符串,它将打印出正确的字符串.

问题是函数似乎是按顺序执行的,直到调用了正确的函数.这会导致错误,因为我使用的数据只能使用正确的函数.

有没有办法只执行正确的功能?

python dictionary function

18
推荐指数
3
解决办法
4136
查看次数

使用多个分隔符提取文本

我有分隔符的字符串列表AB:

L = ['sgfgfqds A aaa','sderas B ffff','eeee','sdsdfd A rrr']
Run Code Online (Sandbox Code Playgroud)

并需要:

L1 = [['aaa'], ['ffff'], ['eeee'], ['rrr']] 
Run Code Online (Sandbox Code Playgroud)

我试过用:

L1 = [re.findall(r'(?<=A)(.*)$', inputtext) for inputtext in L]
print (L1)
Run Code Online (Sandbox Code Playgroud)

但是,它返回以下内容:

[[' aaa'], [], [], [' rrr']] 
Run Code Online (Sandbox Code Playgroud)

如何获得所需的输出?

python regex string list

18
推荐指数
3
解决办法
1937
查看次数

str.startswith如何真正起作用?

我一直在玩startswith(),我发现了一些有趣的东西:

>>> tup = ('1', '2', '3')
>>> lis = ['1', '2', '3', '4']
>>> '1'.startswith(tup)
True
>>> '1'.startswith(lis)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: startswith first arg must be str or a tuple of str, not list
Run Code Online (Sandbox Code Playgroud)

现在,错误是显而易见的,并将列表转换为元组将正常工作,就像它在第一时间做的那样:

>>> '1'.startswith(tuple(lis))
True
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:为什么第一个参数必须是str或str前缀的元组,而不是 str前缀列表

AFAIK,Python代码startswith()可能如下所示:

def startswith(src, prefix):
    return src[:len(prefix)] == prefix
Run Code Online (Sandbox Code Playgroud)

但这让我更加困惑,因为即使考虑到它,无论是列表还是元组,它仍然不应该有任何区别.我错过了什么?

python string tuples list python-3.x

18
推荐指数
2
解决办法
2069
查看次数

使用打印时,与"+"连接比使用","分隔更有效吗?

我只是注意到,如果我+print()函数中使用连接并在shell中运行代码,文本会更快地出现.然而,在使用时,,文本看起来要慢得多,就像使用"正在输入"的动画效果一样.

这两者之间是否存在效率差异?

python performance python-3.x

18
推荐指数
2
解决办法
3724
查看次数

操作符"is"和"in"的魔术方法名称是什么?

我想使用这些运算符的魔术方法进行bool二进制运算.例如,我可以得到a < b作为getattr(a, '__lt__')(b)a == b作为getattr(a, '__eq__')(b).

我能得到a in b并且a is b以这样的方式?

python magic-methods getattr

17
推荐指数
2
解决办法
1335
查看次数

使用类作为其方法中的参数的类型提示

我在下面包含的代码会引发以下错误:

NameError: name 'Vector2' is not defined 
Run Code Online (Sandbox Code Playgroud)

在这一行:

def Translate (self, pos: Vector2):
Run Code Online (Sandbox Code Playgroud)

为什么Python不能Vector2Translate方法中识别我的类?

class Vector2:

    def __init__(self, x: float, y: float):

        self.x = x
        self.y = y

    def Translate(self, pos: Vector2):

        self.x += pos.x
        self.y += pos.y
Run Code Online (Sandbox Code Playgroud)

python oop type-hinting python-3.x

16
推荐指数
2
解决办法
3188
查看次数

复制列表时'[:]'和'[::]'切片之间的区别?

我们可以(浅)复制a list使用[:]:

l = [1, 2, 3]
z1 = l[:]
Run Code Online (Sandbox Code Playgroud)

我们也可以(浅)复制它[::]:

z2 = l[::]
Run Code Online (Sandbox Code Playgroud)

现在z1 == z2True.在阅读了Explain Python的切片表示法中的答案之后,我理解这些切片是如何工作.

但是,我的问题是,这两者内部有什么区别吗?复制中的一个比另一个更有效,还是做同样的事情?

python list slice python-3.x

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