有 3 个文件(a、b和c),均具有777权限:
$ ls
a b c
Run Code Online (Sandbox Code Playgroud)
上述文件有以下内容:
$ cat a
#!/bin/bash
export A=aaa
$ cat b
#!/bin/bash
source ./a
echo $A
$ cat c
#!/bin/bash
source ./a | >> log
echo $A
Run Code Online (Sandbox Code Playgroud)
b和之间的唯一区别c是| >> log:
$ diff b c
2c2
< source ./a
---
> source ./a | >> log
Run Code Online (Sandbox Code Playgroud)
执行时b会输出预期的结果aaa:
$ ./b
aaa
Run Code Online (Sandbox Code Playgroud)
执行时c,对我来说,它输出一个意外的空白行而不是预期的aaa,并且log脚本 …
检查列表中的项目是否连续。
[True for x in lst[:-1] for y in lst[1:] if x + 1 == y]
Run Code Online (Sandbox Code Playgroud)
所以列表[1, 2, 3, 4, 5]
返回[True, True, True, True]意味着列表是连续的。
list[1,2,3,4,4]
返回[True, True, True, True]意味着 list 是连续的,但事实并非如此。
为每个语句做证明
lst = [1,2,3,4,4]
def consecutive(lst):
lst.sort()
return [True for x in lst[:-1] for y in lst[1:] if x + 1 == y]
print(consecutive(lst))
some_list = []
for i,j in zip(lst[:-1], lst[1:]):
if i+1 == j:
some_list.append(True)
else:
some_list.append(False)
print(some_list)
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?
假设我有两个列表,例如:
list1 = ['a', 'c', 'a', 'b']
list2 = ['a', 'a', 'a', 'a', 'b', 'c', 'c', 'd', 'e', 'f']
list_final = list2 - list1
list_final = ['a', 'a', 'c', 'd', 'e', 'f']
Run Code Online (Sandbox Code Playgroud)
我认为set(lists)和使用.difference 的方法不会有帮助,因为它不是一个唯一的集合。任何形式的帮助将不胜感激,我对语言不熟悉,所以欢迎任何和所有答案/提示!
如果我有字典
Singers = [
{'Singer_ID': 'S00464040',
'City': 'BIRMINGHAM',
'First': ' MARTHA RENEE',
'Last': 'BOZEMAN',
'State': 'AL',
'Zipcode': '35201'},
{'Singer_ID': 'S00460410',
'City': 'BIRMINGHAM',
'First': ' EARL FREDERICK JR',
'Last': 'HILLIARD',
'State': 'AL',
'Zipcode': '35202'},
{'Singer_ID': 'S00461038',
'City': 'BIRMINGHAM',
'First': ' SHEILA',
'Last': 'SMOOT',
'State': 'NY',
'Zipcode': '87201'}]
Run Code Online (Sandbox Code Playgroud)
我怎么能写一个匹配 Singer: ID 和 State 的函数?
例如返回:
{'S00464040': 'AL',
'S00460410': 'AL',
'S00461038': 'NY'}
Run Code Online (Sandbox Code Playgroud) 你将如何在 python 中创建一个字典,它看起来有点像这样:
{1:0, 2:0, 3:0, 4:0, ...}
Run Code Online (Sandbox Code Playgroud)
对于特定的迭代次数?
a = 10
counter = 0
condition = (counter<3)
while condition:
a= a +1
print (a)
counter = counter + 1
Run Code Online (Sandbox Code Playgroud)
我的数据集由三列组成,我需要将数据合并为一列。例如,如果 1、2 和 3 是每列的第一个条目,则合并列应该是 123。我试图用 concatenate 命令解决这个问题,但它没有用。这是我的脚本:
tr = pd.read_csv("YMD.txt", sep='\t',header=None)
Y = tr[0]
M = tr[1]
D = tr[2]
np.concatenate((Y, M, D))
Run Code Online (Sandbox Code Playgroud) 为什么 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) 我正在尝试编写一个函数,该函数将使用 AST 来确定某个字符串是否已被硬编码到打印函数调用中。例如,如果这是整个 Python 文件:
print("hard coded")
Run Code Online (Sandbox Code Playgroud)
我得到的树如下:
with open(filename, 'r') as f:
tree = ast.parse(f.read())
nodes = [node for node in ast.walk(tree)]
Run Code Online (Sandbox Code Playgroud)
现在nodes包含[<_ast.Module object at 0x7fa250286150>, <_ast.Expr object at 0x7fa250286050>, <_ast.Call object at 0x7fa2502642d0>, <_ast.Name object at 0x7fa228014610>, <_ast.Str object at 0x7fa228014710>, <_ast.Load object at 0x7fa2280080d0>]
通过测试 attrs 我可以发现nodes[2]有一个.func.idand nodes[2].func.id == 'print',所以这是我的打印命令。但是我如何找到传递给这个打印命令的参数呢?硬编码字符串位于ast.Str列表索引 4 处出现的对象中,但我需要专门确定该字符串已传递给打印,而不仅仅是该字符串出现在文件中。
请看下面的代码片段,我问了下面的问题
class SAMPLES:
x = np.zeros(10)
def __init__(self, k, value):
self.x[k] = value
a = SAMPLES(0, 9)
b = SAMPLES(0, 10)
print(a.x[0])
print(b.x[0])
Run Code Online (Sandbox Code Playgroud)
输出:
10
10
Run Code Online (Sandbox Code Playgroud)
但输出必须是:
9
10
Run Code Online (Sandbox Code Playgroud)
我应该如何解决这个问题?