我正在阅读关于python的新f字符串的博客,它们看起来非常整洁.但是,我希望能够从字符串或文件加载f-string.
我似乎找不到任何字符串方法或其他功能.
从上面链接中的示例:
name = 'Fred'
age = 42
f"My name is {name} and I am {age} years old"
'My name is Fred and I am 42 years old'
Run Code Online (Sandbox Code Playgroud)
但是,如果我有一个字符串s怎么办?我希望能够有效s,这样的事情:
name = 'Fred'
age = 42
s = "My name is {name} and I am {age} years old"
effify(s)
Run Code Online (Sandbox Code Playgroud)
事实证明,我已经可以执行类似的操作str.format并获得性能提升.即:
format = lambda name, age: f"My name is {name} and I am {age} years old"
format('Ted', 12)
'My name is Ted and …Run Code Online (Sandbox Code Playgroud) 我写了这样的代码
>>> class a(object):
def __init__(self):
self.__call__ = lambda x:x
>>> b = a()
Run Code Online (Sandbox Code Playgroud)
我期望类a的对象应该是可调用的对象,但最终它不是.
>>> b()
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
b()
TypeError: 'a' object is not callable
>>> callable(b)
False
>>> hasattr(b,'__call__')
True
>>>
Run Code Online (Sandbox Code Playgroud)
我不明白为什么.请帮我.
我正在创建一个深层次的字典结构.我正在尝试做类似以下的事情:
dict = {}
dict['a']['b'] = True
Run Code Online (Sandbox Code Playgroud)
目前上述失败是因为密钥'a'不存在.目前,我必须检查每个嵌套级别并手动插入一个空字典.是否有某种类型的语法糖能够做到像上面这样可以产生的东西:
{'a': {'b': True}}
Run Code Online (Sandbox Code Playgroud)
无需在每个嵌套级别创建一个空字典?
假设我有一个字符串
Str1 = "TN 81 NZ 0025"
str2 = "DL 11C AA 1111"
two = first2(str1)
print(two)
>>>TN
Run Code Online (Sandbox Code Playgroud)
如何获取这些字符串的前两个字母.我需要first2函数.
我有以下代码:
list1 = [('a', 0), ('b', 100), ('c', 200), ('d', 300), ('e', 400), ('f', 500)]
list2 = [[0, 200, 400], [100, 300, 500]]
Run Code Online (Sandbox Code Playgroud)
list2 只是基本上将数字重新组织为团队,即 2 个子列表。
我的list3将是:
list3 = [['a', 'c', 'e'], ['b', 'd', 'f']]
Run Code Online (Sandbox Code Playgroud)
因此,通过查找 inlist2中的值,list1我需要生成什么代码list3?
这也是有效的:
list1 = [('a', 0), ('b', 0), ('c', 0), ('d', 0), ('e', 0), ('f', 0)]
list2 = [[0, 0, 0], [0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)
它会给:
list3 = [['a', 'b', 'c'], ['d', 'e', 'f']]
Run Code Online (Sandbox Code Playgroud)
所以基本上'a' …
所以我有这个 gen 对象:
yld123cu = (x * u for x in range(1, 4))
Run Code Online (Sandbox Code Playgroud)
我只能这样使用:
u = 2 # some user given value
for i in yld123cu:
print(i, end=' ')
Run Code Online (Sandbox Code Playgroud)
是否有任何语法可以避免使用 u=.. 赋值的额外行?有什么方法可以将 u 值放入 for 语句中?
我想要类似于下面的东西,但使用 gen 表达式,而不是函数:
def yld123u(u):
for i in range(1, 4):
yield i * u
for i in yld123u(2):
print(i, end=' ')
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用线性函数进行数据转换(如米到英尺)。
我试图找到一种方法来构建一个返回反函数的 lambda 函数和另一个返回这些函数组合的 lambda 函数
inches_to_meters=lambda x:x*0.0254
inches_to_feets=lambda x:x*(1/12)
miles_to_feets=lambda x:x*5280
composition=lambda x,y,z: lambda x,y: x(y(z))
opposite=lambda x: 1/x
meters_to_inches=opposite(inches_to_meters)
miles_to_inches = composition(feets_to_inches, miles_to_feets)
print(meters_to_inches(10))
Run Code Online (Sandbox Code Playgroud)
我怎样才能做出相反的功能(F^-1(x))?
(例如:y=x/12,则12*y=x,反之为:12*x=y)。
可以将字符串方法(例如 .rjust())保存在变量中并应用于字符串吗?
看着这里,但无法找到一个解决方案。
例如,不是声明rjust(4, '-')两次,而是在一个变量中编码一次,然后传递给两个字符串?
# Instead of this
print("a".rjust(4, '-'),
"xyz".rjust(4, '-'),
sep="\n")
# Something like this?
my_fmt = rjust(4, '-')
print("a".my_fmt,
"xyz".my_fmt,
sep="\n")
Run Code Online (Sandbox Code Playgroud)
两者都会导致:
---a
-xyz
Run Code Online (Sandbox Code Playgroud) 我在做一些关于 codewars 的练习时发现了这个问题:
完成该函数
scramble(str1, str2),如果部分str1字符可以重新排列以匹配str2,则返回 true,否则返回 false。
完成并查看其他答案后我发现:
scramble=lambda a,b,c=__import__('collections').Counter:not c(b)-c(a)
Run Code Online (Sandbox Code Playgroud)
有人能解释一下这里发生了什么吗?=为什么lambda 声明后面有 a以及参数是如何分配的???
我没有找到对此的太多解释。
为什么 python3.8+ 在使用 := 时将结果视为嵌套 lambda 中的局部变量,但在其他情况下则不然?
>>> counter = (lambda result: (lambda: (result + 1)))(0)
>>> counter()
1
>>> counter = (lambda result: (lambda: (result := result + 1)))(0)
>>> counter()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
UnboundLocalError: local variable 'result' referenced before assignment
Run Code Online (Sandbox Code Playgroud)