标签: shift

如何有效地左移一个元组?

我正在寻找一种左移元组的有效方法.

到目前为止我做了什么:

def leftShift(tup, n):
    length = len(tup)
    if length != 0:
        n = n % length
    else:
        return tuple()
    return tup[n:] + tup[0:n]

sample = (1,2,3,4)
sample2 = ()

print(leftShift(sample, 5)) #prints (2, 3, 4, 1)
print(leftShift(sample, 1)) #prints (2, 3, 4, 1)
print(leftShift(sample, 15)) #prints (4, 1, 2, 3)
print(leftShift(sample, 3)) #prints (4, 1, 2, 3)
print(leftShift(sample2, 4)) #prints ()
Run Code Online (Sandbox Code Playgroud)

移位的位数作为第二个参数给出.

它有效吗?它可以用更多Pythonic方式编码吗?

告诉我,是吗......

length = len(tup)
if length != 0:
    n = n % length
Run Code Online (Sandbox Code Playgroud)

效率更高

if len(tup) …
Run Code Online (Sandbox Code Playgroud)

python tuples shift

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

PHP数组:添加新元素时重新编号元素

我有一个包含元素的PHP数组:

$myarray = array ( "tom", "dick", "Harry" );
Run Code Online (Sandbox Code Playgroud)

.我需要将数组固定为仅3个元素的大小.我需要添加一个新元素"jerry",这样阵列现在看起来像

 $myarray = array ( "jerry", "tom", "dick");
Run Code Online (Sandbox Code Playgroud)

所以在某种程度上我正在移动元素并且第4个元素掉线,最新的元素在开头.我可以手工编写所有这些,重新编号元素等.

我只是想知道是否有更快的方法来做到这一点.

非常感谢!Ĵ

php arrays shift

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

移动一个数组并使用memcpy在给定位置插入一个新元素

我需要移动数组并使用在给定位置插入一个新元素memcpy.

Input: 2, 5, 7, 0, 0, 0

Expected output: 2, 3, 5, 7, 0, 0

Actual output: 2, 3, 5, 0, 0, 0
Run Code Online (Sandbox Code Playgroud)

我的错了memcpy吗?(我必须使用数组 - 不是std::vectors)

#include <stdio.h>
int main()
{
    int i=0;
    int len=0;
    int a[6] = {'\0'};
    a[0]= 2;
    a[1] = 5;
    a[2]= 7;
    len=3;
    int b=0;
    b = 2;
    memcpy(a+2, a+1, b * sizeof(int));
    //memcpy(a+2, a+1, sizeof(int) * (len-1));
    a[1]=3;
    for(i=0;i<6;i++)
        printf("after %d \n", a[i]);
}
Run Code Online (Sandbox Code Playgroud)

c++ position shift memcpy

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

如何使用串联通过std_logic_vector移动std_logic_vector

假设我有2个std_logic_vectors:

inputA : std_logic_vector(31 downto 0)
inputB:  std_logic_vector(31 downto 0)
Run Code Online (Sandbox Code Playgroud)

如何转向inputA通过inputB使用串联?

我知道如何向左或向右移动1个位置,但无法弄清楚如何将N个位置向右(或左)移动.注意:这是一个无时钟电路,不能使用标准的vhdl移位运算符.

除了连接之外的其他技术或想法也将被理解.

concatenation vhdl shift

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

使用带方括号的数组#shift(Ruby)

我正在阅读为什么是Ruby的Poignant指南,我发现了这个代码示例,其中他向String类添加了一个类变量和一个实例方法.这个想法是,给定一个外星人的名字,如"Paij-Ree",我们可以运行类似的东西

"Paij-ree".determine_significance # returns "Personal AM"
Run Code Online (Sandbox Code Playgroud)

这是代码:

class String

  @@syllables = [
    { 'Paij' => 'Personal',
      'Gonk' => 'Business',
      'Blon' => 'Slave',
      'Stro' => 'Master',
      'Wert' => 'Father',
      'Onnn' => 'Mother' },
    { 'ree'  => 'AM',
      'plo'  => 'PM' }
  ]

  # a method to determine what a certain
  # name of his means

  def determine_significance

    parts = self.split( '-' )

    syllables = @@syllables.dup

    signif = parts.collect do |p|
      syllables.shift[p]
    end

    signif.join( ' ' )
  end

end
Run Code Online (Sandbox Code Playgroud)

我的问题:在Array#shift方法之后有哪些方括号的collect块中发生了什么?我只能找到像这样使用它的例子:

letters = …
Run Code Online (Sandbox Code Playgroud)

ruby shift

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

使用ord和chr换字母

我正在尝试执行一个函数,将每个单词中的每个字母按值移动到右边,这些单词将来自一个列表,我将使用"打开"函数打开它我编写代码,我在这里遇到一些困难是我的代码

def test():
value=eval(input("Value here!"))
with open ("word-text.txt","r") as f:
    for ord in (f):
        print (ord)
        for chr in ord:
            print (chr)
            #nice=(chr[len(ord)+value])
        ''.join([chr(ord(i)+2) for i in s])
        print (i)
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出

Value here!2
apples

a
p
p
l
e
s


Traceback (most recent call last):
  File "<pyshell#54>", line 1, in <module>
    test()
  File "/Users/user/Desktop/Outlook(1)/lab6.py", line 59, in test
    ''.join([chr(ord(i)+2) for i in s])
NameError: global name 's' is not defined
Run Code Online (Sandbox Code Playgroud)

列表,我有以下的话苹果橘子西瓜猕猴桃西葫芦胡萝卜秋葵墨西哥胡椒胡椒黄瓜香蕉和当我使用此代码

ef test():
value=eval(input("Value here!"))
with open ("word-text.txt","r") as f: …
Run Code Online (Sandbox Code Playgroud)

python function shift chr ord

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

将数据转换回原始项目

我有一些代码,我不明白如何获取单个项目:

u32_t foo = ((u32_t)((d) & 0xff) << 24) | ((u32_t)((c) & 0xff) << 16) |  
((u32_t)((b) & 0xff) << 8)  | (u32_t)((a) & 0xff)
Run Code Online (Sandbox Code Playgroud)

我想输入这个转换的结果我想要将IP地址转换回要显示的部分.但是当我输入192 168 1 200时,我得到0xC801A8C0而我没有将其转换回来.

有谁知道我如何在union结构中的项目?我尝试使用LwIP,但工会结构有问题.我尝试访问local_ip和remote_ip. 结构

c data-conversion shift

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

"移位单独操作"是什么意思?

我在书中读到了这句话:

逻辑和移位指令分别对位进行操作与算术不同,后者对整个字进行操作

用于隔离字段.通过遮蔽或来回移动.

我根本无法理解这两句话.

移位和算术指令都会改变所有位(在某些情况下),并且在算术中,逐位添加位以计算答案.

那么这部分的含义是什么?"指令单独操作指令不同于算术,它对整个单词进行操作"?

我的第二个问题:

我不知道对这部分有任何想法你能解释一下吗:

用于隔离字段.通过遮蔽或来回移动.

我的第三个问题:什么是逻辑指令.他的意思是AND,例如?你能解释一下吗?

assembly bit-manipulation mips shift bitwise-operators

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

你为什么不能移动uint16_t

我正在尝试通过组合16位和8位值来填充64位无符号变量:

uint8_t byte0 = 0x00;
uint8_t byte1 = 0xAA;
uint8_t byte2 = 0x00;
uint8_t byte3 = 0xAA;

uint16_t hword0 = 0xAA00;
uint16_t hword1 = 0xAAAA;

uint64_t result = ( hword0 << 32 ) + ( byte3 << 24 ) + 
                  ( byte2 << 16 ) + ( byte1 << 8 ) + ( byte0 << 0  );
Run Code Online (Sandbox Code Playgroud)

这给了我一个警告。

 left shift count >= width of type [-Wshift-count-overflow]
 uint64_t result = ( hword0 << 32 )
Run Code Online (Sandbox Code Playgroud)

c c++ bit-manipulation bit-shift shift

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

在 Python 中推送和弹出列表的最有效方法是什么?

在 Python 中,如何编写代码将列表的最后一个元素移出并在开头添加一个新元素 - 以在执行时尽可能快地运行?

有一些很好的解决方案涉及使用附加、旋转等,但并非所有解决方案都可以转化为快速执行。

python performance list shift

2
推荐指数
3
解决办法
1878
查看次数